Chris@0
|
1 <?php
|
Chris@0
|
2 /*
|
Chris@0
|
3 * This file is part of the PHPUnit_MockObject package.
|
Chris@0
|
4 *
|
Chris@0
|
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
|
Chris@0
|
6 *
|
Chris@0
|
7 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
8 * file that was distributed with this source code.
|
Chris@0
|
9 */
|
Chris@0
|
10
|
Chris@0
|
11 /**
|
Chris@0
|
12 * Invocation matcher which checks if a method was invoked at a certain index.
|
Chris@0
|
13 *
|
Chris@0
|
14 * If the expected index number does not match the current invocation index it
|
Chris@0
|
15 * will not match which means it skips all method and parameter matching. Only
|
Chris@0
|
16 * once the index is reached will the method and parameter start matching and
|
Chris@0
|
17 * verifying.
|
Chris@0
|
18 *
|
Chris@0
|
19 * If the index is never reached it will throw an exception in index.
|
Chris@0
|
20 *
|
Chris@0
|
21 * @since Class available since Release 1.0.0
|
Chris@0
|
22 */
|
Chris@0
|
23 class PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex implements PHPUnit_Framework_MockObject_Matcher_Invocation
|
Chris@0
|
24 {
|
Chris@0
|
25 /**
|
Chris@0
|
26 * @var int
|
Chris@0
|
27 */
|
Chris@0
|
28 protected $sequenceIndex;
|
Chris@0
|
29
|
Chris@0
|
30 /**
|
Chris@0
|
31 * @var int
|
Chris@0
|
32 */
|
Chris@0
|
33 protected $currentIndex = -1;
|
Chris@0
|
34
|
Chris@0
|
35 /**
|
Chris@0
|
36 * @param int $sequenceIndex
|
Chris@0
|
37 */
|
Chris@0
|
38 public function __construct($sequenceIndex)
|
Chris@0
|
39 {
|
Chris@0
|
40 $this->sequenceIndex = $sequenceIndex;
|
Chris@0
|
41 }
|
Chris@0
|
42
|
Chris@0
|
43 /**
|
Chris@0
|
44 * @return string
|
Chris@0
|
45 */
|
Chris@0
|
46 public function toString()
|
Chris@0
|
47 {
|
Chris@0
|
48 return 'invoked at sequence index ' . $this->sequenceIndex;
|
Chris@0
|
49 }
|
Chris@0
|
50
|
Chris@0
|
51 /**
|
Chris@0
|
52 * @param PHPUnit_Framework_MockObject_Invocation $invocation
|
Chris@0
|
53 * @return bool
|
Chris@0
|
54 */
|
Chris@0
|
55 public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
|
Chris@0
|
56 {
|
Chris@0
|
57 $this->currentIndex++;
|
Chris@0
|
58
|
Chris@0
|
59 return $this->currentIndex == $this->sequenceIndex;
|
Chris@0
|
60 }
|
Chris@0
|
61
|
Chris@0
|
62 /**
|
Chris@0
|
63 * @param PHPUnit_Framework_MockObject_Invocation $invocation
|
Chris@0
|
64 */
|
Chris@0
|
65 public function invoked(PHPUnit_Framework_MockObject_Invocation $invocation)
|
Chris@0
|
66 {
|
Chris@0
|
67 }
|
Chris@0
|
68
|
Chris@0
|
69 /**
|
Chris@0
|
70 * Verifies that the current expectation is valid. If everything is OK the
|
Chris@0
|
71 * code should just return, if not it must throw an exception.
|
Chris@0
|
72 *
|
Chris@0
|
73 * @throws PHPUnit_Framework_ExpectationFailedException
|
Chris@0
|
74 */
|
Chris@0
|
75 public function verify()
|
Chris@0
|
76 {
|
Chris@0
|
77 if ($this->currentIndex < $this->sequenceIndex) {
|
Chris@0
|
78 throw new PHPUnit_Framework_ExpectationFailedException(
|
Chris@0
|
79 sprintf(
|
Chris@0
|
80 'The expected invocation at index %s was never reached.',
|
Chris@0
|
81 $this->sequenceIndex
|
Chris@0
|
82 )
|
Chris@0
|
83 );
|
Chris@0
|
84 }
|
Chris@0
|
85 }
|
Chris@0
|
86 }
|