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