VerificationDirector::withArgs()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
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 [email protected] 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 8
    public function __construct(ReceivedMethodCalls $receivedMethodCalls, VerificationExpectation $expectation)
29
    {
30 8
        $this->receivedMethodCalls = $receivedMethodCalls;
31 8
        $this->expectation = $expectation;
32 8
    }
33
34 8
    public function verify()
35
    {
36 8
        return $this->receivedMethodCalls->verify($this->expectation);
37
    }
38
39 2
    public function with(...$args)
40
    {
41 2
        return $this->cloneApplyAndVerify("with", $args);
42
    }
43
44 1
    public function withArgs($args)
45
    {
46 1
        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 1
    public function twice()
70
    {
71 1
        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 1
    protected function cloneWithoutCountValidatorsApplyAndVerify($method, $args)
90
    {
91 1
        $expectation = clone $this->expectation;
92 1
        $expectation->clearCountValidators();
93 1
        call_user_func_array(array($expectation, $method), $args);
94 1
        $director = new VerificationDirector($this->receivedMethodCalls, $expectation);
95 1
        $director->verify();
96 1
        return $director;
97
    }
98
99 3
    protected function cloneApplyAndVerify($method, $args)
100
    {
101 3
        $expectation = clone $this->expectation;
102 3
        call_user_func_array(array($expectation, $method), $args);
103 3
        $director = new VerificationDirector($this->receivedMethodCalls, $expectation);
104 3
        $director->verify();
105 3
        return $director;
106
    }
107
}
108