$stub =& new StubDummy();
        $stub->setReturnValueAt(0, "anotherMethod", "aaa");
        $stub->setReturnValue("aMethod", "AAA");
        $this->assertIdentical($stub->aMethod(), "AAA");
        $this->assertIdentical($stub->anotherMethod(), "aaa");
    }
}
Mock::generate('Dummy');
Mock::generate('Dummy', 'AnotherMockDummy');
Mock::generate('Dummy', 'MockDummyWithExtraMethods', array('extraMethod'));
class SpecialSimpleMock extends SimpleMock
{
}
SimpleTest::setMockBaseClass("SpecialSimpleMock");
Mock::generate("Dummy", "SpecialMockDummy");
SimpleTest::setMockBaseClass("SimpleMock");
class TestOfMockGeneration extends UnitTestCase
{
    function testCloning()
    {
        $mock =& new MockDummy();
        $this->assertTrue(method_exists($mock, "aMethod"));
        $this->assertNull($mock->aMethod());
    }
    function testCloningWithExtraMethod()
    {
        $mock =& new MockDummyWithExtraMethods();
        $this->assertTrue(method_exists($mock, "extraMethod"));
    }
    function testCloningWithChosenClassName()
    {
    function testMaximumCallsSatisfiedByNoCalls()
    {
        $mock = new MockDummy();
        $mock->expectMaximumCallCount('aMethod', 1);
    }
}
class MockWithInjectedTestCase extends SimpleMock
{
    protected function getCurrentTestCase()
    {
        return SimpleTest::getContext()->getTest()->getMockedTest();
    }
}
SimpleTest::setMockBaseClass('MockWithInjectedTestCase');
Mock::generate('Dummy', 'MockDummyWithInjectedTestCase');
SimpleTest::setMockBaseClass('SimpleMock');
Mock::generate('SimpleTestCase');
class LikeExpectation extends IdenticalExpectation
{
    function __construct($expectation)
    {
        $expectation->message = '';
        parent::__construct($expectation);
    }
    function test($compare)
    {
        $compare->message = '';
        return parent::test($compare);
    }
    function testMessage($compare)
    {