Pull merge.
[yaffs-website] / vendor / phpunit / phpunit-mock-objects / src / Framework / MockObject / Stub / ConsecutiveCalls.php
1 <?php
2 /*
3  * This file is part of the PHPUnit_MockObject package.
4  *
5  * (c) Sebastian Bergmann <sebastian@phpunit.de>
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 use SebastianBergmann\Exporter\Exporter;
12
13 /**
14  * Stubs a method by returning a user-defined stack of values.
15  *
16  * @since Class available since Release 1.0.0
17  */
18 class PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls implements PHPUnit_Framework_MockObject_Stub
19 {
20     protected $stack;
21     protected $value;
22
23     public function __construct($stack)
24     {
25         $this->stack = $stack;
26     }
27
28     public function invoke(PHPUnit_Framework_MockObject_Invocation $invocation)
29     {
30         $this->value = array_shift($this->stack);
31
32         if ($this->value instanceof PHPUnit_Framework_MockObject_Stub) {
33             $this->value = $this->value->invoke($invocation);
34         }
35
36         return $this->value;
37     }
38
39     public function toString()
40     {
41         $exporter = new Exporter;
42
43         return sprintf(
44             'return user-specified value %s',
45             $exporter->export($this->value)
46         );
47     }
48 }