Mercurial > hg > isophonics-drupal-site
diff vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php @ 14:1fec387a4317
Update Drupal core to 8.5.2 via Composer
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:46:53 +0100 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line diff
--- a/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php Mon Apr 23 09:33:26 2018 +0100 +++ b/vendor/phpunit/phpunit-mock-objects/tests/GeneratorTest.php Mon Apr 23 09:46:53 2018 +0100 @@ -1,87 +1,108 @@ <?php -class Framework_MockObject_GeneratorTest extends PHPUnit_Framework_TestCase +/* + * This file is part of the phpunit-mock-objects package. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use PHPUnit\Framework\MockObject\Generator; +use PHPUnit\Framework\MockObject\MockObject; +use PHPUnit\Framework\TestCase; + +/** + * @covers \PHPUnit\Framework\MockObject\Generator + * + * @uses \PHPUnit\Framework\MockObject\InvocationMocker + * @uses \PHPUnit\Framework\MockObject\Builder\InvocationMocker + * @uses \PHPUnit\Framework\MockObject\Invocation\ObjectInvocation + * @uses \PHPUnit\Framework\MockObject\Invocation\StaticInvocation + * @uses \PHPUnit\Framework\MockObject\Matcher + * @uses \PHPUnit\Framework\MockObject\Matcher\InvokedRecorder + * @uses \PHPUnit\Framework\MockObject\Matcher\MethodName + * @uses \PHPUnit\Framework\MockObject\Stub\ReturnStub + * @uses \PHPUnit\Framework\MockObject\Matcher\InvokedCount + */ +class GeneratorTest extends TestCase { /** - * @var PHPUnit_Framework_MockObject_Generator + * @var Generator */ - protected $generator; + private $generator; protected function setUp() { - $this->generator = new PHPUnit_Framework_MockObject_Generator; + $this->generator = new Generator; + } + + public function testGetMockFailsWhenInvalidFunctionNameIsPassedInAsAFunctionToMock() + { + $this->expectException(\PHPUnit\Framework\MockObject\RuntimeException::class); + + $this->generator->getMock(stdClass::class, [0]); + } + + public function testGetMockCanCreateNonExistingFunctions() + { + $mock = $this->generator->getMock(stdClass::class, ['testFunction']); + + $this->assertTrue(method_exists($mock, 'testFunction')); + } + + public function testGetMockGeneratorFails() + { + $this->expectException(\PHPUnit\Framework\MockObject\RuntimeException::class); + $this->expectExceptionMessage('duplicates: "foo, bar, foo" (duplicate: "foo")'); + + $this->generator->getMock(stdClass::class, ['foo', 'bar', 'foo']); } /** - * @covers PHPUnit_Framework_MockObject_Generator::getMock - * @expectedException PHPUnit_Framework_Exception + * @requires PHP 7 */ - public function testGetMockFailsWhenInvalidFunctionNameIsPassedInAsAFunctionToMock() + public function testGetMockBlacklistedMethodNamesPhp7() { - $this->generator->getMock('StdClass', array(0)); + $mock = $this->generator->getMock(InterfaceWithSemiReservedMethodName::class); + + $this->assertTrue(method_exists($mock, 'unset')); + $this->assertInstanceOf(InterfaceWithSemiReservedMethodName::class, $mock); } - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMock - */ - public function testGetMockCanCreateNonExistingFunctions() - { - $mock = $this->generator->getMock('StdClass', array('testFunction')); - $this->assertTrue(method_exists($mock, 'testFunction')); - } - - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMock - * @expectedException PHPUnit_Framework_MockObject_RuntimeException - * @expectedExceptionMessage duplicates: "foo, foo" - */ - public function testGetMockGeneratorFails() - { - $mock = $this->generator->getMock('StdClass', array('foo', 'foo')); - } - - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass - */ public function testGetMockForAbstractClassDoesNotFailWhenFakingInterfaces() { - $mock = $this->generator->getMockForAbstractClass('Countable'); + $mock = $this->generator->getMockForAbstractClass(Countable::class); + $this->assertTrue(method_exists($mock, 'count')); } - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass - */ public function testGetMockForAbstractClassStubbingAbstractClass() { - $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass'); + $mock = $this->generator->getMockForAbstractClass(AbstractMockTestClass::class); + $this->assertTrue(method_exists($mock, 'doSomething')); } - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass - */ public function testGetMockForAbstractClassWithNonExistentMethods() { $mock = $this->generator->getMockForAbstractClass( - 'AbstractMockTestClass', - array(), + AbstractMockTestClass::class, + [], '', true, true, true, - array('nonexistentMethod') + ['nonexistentMethod'] ); $this->assertTrue(method_exists($mock, 'nonexistentMethod')); $this->assertTrue(method_exists($mock, 'doSomething')); } - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass - */ public function testGetMockForAbstractClassShouldCreateStubsOnlyForAbstractMethodWhenNoMethodsWereInformed() { - $mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass'); + $mock = $this->generator->getMockForAbstractClass(AbstractMockTestClass::class); $mock->expects($this->any()) ->method('doSomething') @@ -93,48 +114,39 @@ /** * @dataProvider getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider - * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass - * @expectedException PHPUnit_Framework_Exception */ public function testGetMockForAbstractClassExpectingInvalidArgumentException($className, $mockClassName) { - $mock = $this->generator->getMockForAbstractClass($className, array(), $mockClassName); + $this->expectException(PHPUnit\Framework\Exception::class); + + $this->generator->getMockForAbstractClass($className, [], $mockClassName); } - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass - * @expectedException PHPUnit_Framework_MockObject_RuntimeException - */ public function testGetMockForAbstractClassAbstractClassDoesNotExist() { - $mock = $this->generator->getMockForAbstractClass('Tux'); + $this->expectException(\PHPUnit\Framework\MockObject\RuntimeException::class); + + $this->generator->getMockForAbstractClass('Tux'); } - /** - * Dataprovider for test "testGetMockForAbstractClassExpectingInvalidArgumentException" - */ - public static function getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider() + public function getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider() { - return array( - 'className not a string' => array(array(), ''), - 'mockClassName not a string' => array('Countable', new StdClass), - ); + return [ + 'className not a string' => [[], ''], + 'mockClassName not a string' => [Countable::class, new stdClass], + ]; } - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait - * @requires PHP 5.4.0 - */ public function testGetMockForTraitWithNonExistentMethodsAndNonAbstractMethods() { $mock = $this->generator->getMockForTrait( - 'AbstractTrait', - array(), + AbstractTrait::class, + [], '', true, true, true, - array('nonexistentMethod') + ['nonexistentMethod'] ); $this->assertTrue(method_exists($mock, 'nonexistentMethod')); @@ -143,58 +155,56 @@ $this->assertTrue($mock->anotherMockableMethod()); } - /** - * @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait - * @requires PHP 5.4.0 - */ public function testGetMockForTraitStubbingAbstractMethod() { - $mock = $this->generator->getMockForTrait('AbstractTrait'); + $mock = $this->generator->getMockForTrait(AbstractTrait::class); + $this->assertTrue(method_exists($mock, 'doSomething')); } - /** - * @requires PHP 5.4.0 - */ public function testGetMockForSingletonWithReflectionSuccess() { - // Probably, this should be moved to tests/autoload.php - require_once __DIR__ . '/_fixture/SingletonClass.php'; + $mock = $this->generator->getMock(SingletonClass::class, ['doSomething'], [], '', false); - $mock = $this->generator->getMock('SingletonClass', array('doSomething'), array(), '', false); $this->assertInstanceOf('SingletonClass', $mock); } - /** - * Same as "testGetMockForSingletonWithReflectionSuccess", but we expect - * warning for PHP < 5.4.0 since PHPUnit will try to execute private __wakeup - * on unserialize - */ - public function testGetMockForSingletonWithUnserializeFail() + public function testExceptionIsRaisedForMutuallyExclusiveOptions() { - if (version_compare(PHP_VERSION, '5.4.0', '>=')) { - $this->markTestSkipped('Only for PHP < 5.4.0'); - } + $this->expectException(\PHPUnit\Framework\MockObject\RuntimeException::class); - $this->setExpectedException('PHPUnit_Framework_MockObject_RuntimeException'); - - // Probably, this should be moved to tests/autoload.php - require_once __DIR__ . '/_fixture/SingletonClass.php'; - - $mock = $this->generator->getMock('SingletonClass', array('doSomething'), array(), '', false); + $this->generator->getMock(stdClass::class, [], [], '', false, true, true, true, true); } /** - * ReflectionClass::getMethods for SoapClient on PHP 5.3 produces PHP Fatal Error - * @runInSeparateProcess + * @requires PHP 7 */ - public function testGetMockForSoapClientReflectionMethodsDuplication() + public function testCanImplementInterfacesThatHaveMethodsWithReturnTypes() { - if (version_compare(PHP_VERSION, '5.4.0', '>=')) { - $this->markTestSkipped('Only for PHP < 5.4.0'); - } + $stub = $this->generator->getMock([AnInterfaceWithReturnType::class, AnInterface::class]); - $mock = $this->generator->getMock('SoapClient', array(), array(), '', false); - $this->assertInstanceOf('SoapClient', $mock); + $this->assertInstanceOf(AnInterfaceWithReturnType::class, $stub); + $this->assertInstanceOf(AnInterface::class, $stub); + $this->assertInstanceOf(MockObject::class, $stub); + } + + public function testCanConfigureMethodsForDoubleOfNonExistentClass() + { + $className = 'X' . md5(microtime()); + + $mock = $this->generator->getMock($className, ['someMethod']); + + $this->assertInstanceOf($className, $mock); + } + + public function testCanInvokeMethodsOfNonExistentClass() + { + $className = 'X' . md5(microtime()); + + $mock = $this->generator->getMock($className, ['someMethod']); + + $mock->expects($this->once())->method('someMethod'); + + $this->assertNull($mock->someMethod()); } }