1--TEST--
2PHPUnit_Framework_MockObject_Generator::generate('NS\Foo', array(), 'MockFoo', true)
3--FILE--
4<?php
5namespace NS;
6
7interface IFoo
8{
9    public function __construct($bar);
10}
11
12class Foo implements IFoo
13{
14    public function __construct($bar)
15    {
16    }
17}
18
19require __DIR__ . '/../../../vendor/autoload.php';
20
21$generator = new \PHPUnit_Framework_MockObject_Generator;
22
23$mock = $generator->generate(
24    'NS\Foo',
25    array(),
26    'MockFoo',
27    true
28);
29
30print $mock['code'];
31?>
32--EXPECTF--
33class MockFoo extends NS\Foo implements PHPUnit_Framework_MockObject_MockObject
34{
35    private $__phpunit_invocationMocker;
36    private $__phpunit_originalObject;
37    private $__phpunit_configurable = [];
38
39    public function __clone()
40    {
41        $this->__phpunit_invocationMocker = clone $this->__phpunit_getInvocationMocker();
42    }
43
44    public function expects(PHPUnit_Framework_MockObject_Matcher_Invocation $matcher)
45    {
46        return $this->__phpunit_getInvocationMocker()->expects($matcher);
47    }
48
49    public function method()
50    {
51        $any = new PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount;
52        $expects = $this->expects($any);
53        return call_user_func_array(array($expects, 'method'), func_get_args());
54    }
55
56    public function __phpunit_setOriginalObject($originalObject)
57    {
58        $this->__phpunit_originalObject = $originalObject;
59    }
60
61    public function __phpunit_getInvocationMocker()
62    {
63        if ($this->__phpunit_invocationMocker === null) {
64            $this->__phpunit_invocationMocker = new PHPUnit_Framework_MockObject_InvocationMocker($this->__phpunit_configurable);
65        }
66
67        return $this->__phpunit_invocationMocker;
68    }
69
70    public function __phpunit_hasMatchers()
71    {
72        return $this->__phpunit_getInvocationMocker()->hasMatchers();
73    }
74
75    public function __phpunit_verify($unsetInvocationMocker = true)
76    {
77        $this->__phpunit_getInvocationMocker()->verify();
78
79        if ($unsetInvocationMocker) {
80            $this->__phpunit_invocationMocker = null;
81        }
82    }
83}
84