Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
/**
3
 * Mockery
4
 *
5
 * LICENSE
6
 *
7
 * This source file is subject to the new BSD license that is bundled
8
 * with this package in the file LICENSE.txt.
9
 * It is also available through the world-wide-web at this URL:
10
 * http://github.com/padraic/mockery/blob/master/LICENSE
11
 * If you did not receive a copy of the license and are unable to
12
 * obtain it through the world-wide-web, please send an email
13
 * to padraic@php.net so we can send you a copy immediately.
14
 *
15
 * @category   Mockery
16
 * @package    Mockery
17
 * @copyright  Copyright (c) 2010 Pádraic Brady (http://blog.astrumfutura.com)
18
 * @license    http://github.com/padraic/mockery/blob/master/LICENSE New BSD License
19
 */
20
 
21
namespace Mockery;
22
 
23
class VerificationDirector
24
{
25
    private $receivedMethodCalls;
26
    private $expectation;
27
 
28
    public function __construct(ReceivedMethodCalls $receivedMethodCalls, VerificationExpectation $expectation)
29
    {
30
        $this->receivedMethodCalls = $receivedMethodCalls;
31
        $this->expectation = $expectation;
32
    }
33
 
34
    public function verify()
35
    {
36
        return $this->receivedMethodCalls->verify($this->expectation);
37
    }
38
 
39
    public function with(...$args)
40
    {
41
        return $this->cloneApplyAndVerify("with", $args);
42
    }
43
 
44
    public function withArgs($args)
45
    {
46
        return $this->cloneApplyAndVerify("withArgs", array($args));
47
    }
48
 
49
    public function withNoArgs()
50
    {
51
        return $this->cloneApplyAndVerify("withNoArgs", array());
52
    }
53
 
54
    public function withAnyArgs()
55
    {
56
        return $this->cloneApplyAndVerify("withAnyArgs", array());
57
    }
58
 
59
    public function times($limit = null)
60
    {
61
        return $this->cloneWithoutCountValidatorsApplyAndVerify("times", array($limit));
62
    }
63
 
64
    public function once()
65
    {
66
        return $this->cloneWithoutCountValidatorsApplyAndVerify("once", array());
67
    }
68
 
69
    public function twice()
70
    {
71
        return $this->cloneWithoutCountValidatorsApplyAndVerify("twice", array());
72
    }
73
 
74
    public function atLeast()
75
    {
76
        return $this->cloneWithoutCountValidatorsApplyAndVerify("atLeast", array());
77
    }
78
 
79
    public function atMost()
80
    {
81
        return $this->cloneWithoutCountValidatorsApplyAndVerify("atMost", array());
82
    }
83
 
84
    public function between($minimum, $maximum)
85
    {
86
        return $this->cloneWithoutCountValidatorsApplyAndVerify("between", array($minimum, $maximum));
87
    }
88
 
89
    protected function cloneWithoutCountValidatorsApplyAndVerify($method, $args)
90
    {
91
        $expectation = clone $this->expectation;
92
        $expectation->clearCountValidators();
93
        call_user_func_array(array($expectation, $method), $args);
94
        $director = new VerificationDirector($this->receivedMethodCalls, $expectation);
95
        $director->verify();
96
        return $director;
97
    }
98
 
99
    protected function cloneApplyAndVerify($method, $args)
100
    {
101
        $expectation = clone $this->expectation;
102
        call_user_func_array(array($expectation, $method), $args);
103
        $director = new VerificationDirector($this->receivedMethodCalls, $expectation);
104
        $director->verify();
105
        return $director;
106
    }
107
}