Mercurial > hg > isophonics-drupal-site
diff vendor/phpunit/phpunit-mock-objects/src/MockBuilder.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 | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/phpunit/phpunit-mock-objects/src/MockBuilder.php Mon Apr 23 09:46:53 2018 +0100 @@ -0,0 +1,389 @@ +<?php +/* + * 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. + */ +namespace PHPUnit\Framework\MockObject; + +use PHPUnit\Framework\TestCase; + +/** + * Implementation of the Builder pattern for Mock objects. + */ +class MockBuilder +{ + /** + * @var TestCase + */ + private $testCase; + + /** + * @var string + */ + private $type; + + /** + * @var array + */ + private $methods = []; + + /** + * @var array + */ + private $methodsExcept = []; + + /** + * @var string + */ + private $mockClassName = ''; + + /** + * @var array + */ + private $constructorArgs = []; + + /** + * @var bool + */ + private $originalConstructor = true; + + /** + * @var bool + */ + private $originalClone = true; + + /** + * @var bool + */ + private $autoload = true; + + /** + * @var bool + */ + private $cloneArguments = false; + + /** + * @var bool + */ + private $callOriginalMethods = false; + + /** + * @var object + */ + private $proxyTarget = null; + + /** + * @var bool + */ + private $allowMockingUnknownTypes = true; + + /** + * @var Generator + */ + private $generator; + + /** + * @param TestCase $testCase + * @param array|string $type + */ + public function __construct(TestCase $testCase, $type) + { + $this->testCase = $testCase; + $this->type = $type; + $this->generator = new Generator; + } + + /** + * Creates a mock object using a fluent interface. + * + * @return MockObject + */ + public function getMock() + { + $object = $this->generator->getMock( + $this->type, + $this->methods, + $this->constructorArgs, + $this->mockClassName, + $this->originalConstructor, + $this->originalClone, + $this->autoload, + $this->cloneArguments, + $this->callOriginalMethods, + $this->proxyTarget, + $this->allowMockingUnknownTypes + ); + + $this->testCase->registerMockObject($object); + + return $object; + } + + /** + * Creates a mock object for an abstract class using a fluent interface. + * + * @return MockObject + */ + public function getMockForAbstractClass() + { + $object = $this->generator->getMockForAbstractClass( + $this->type, + $this->constructorArgs, + $this->mockClassName, + $this->originalConstructor, + $this->originalClone, + $this->autoload, + $this->methods, + $this->cloneArguments + ); + + $this->testCase->registerMockObject($object); + + return $object; + } + + /** + * Creates a mock object for a trait using a fluent interface. + * + * @return MockObject + */ + public function getMockForTrait() + { + $object = $this->generator->getMockForTrait( + $this->type, + $this->constructorArgs, + $this->mockClassName, + $this->originalConstructor, + $this->originalClone, + $this->autoload, + $this->methods, + $this->cloneArguments + ); + + $this->testCase->registerMockObject($object); + + return $object; + } + + /** + * Specifies the subset of methods to mock. Default is to mock none of them. + * + * @param array|null $methods + * + * @return MockBuilder + */ + public function setMethods(array $methods = null) + { + $this->methods = $methods; + + return $this; + } + + /** + * Specifies the subset of methods to not mock. Default is to mock all of them. + * + * @param array $methods + * + * @return MockBuilder + */ + public function setMethodsExcept(array $methods = []) + { + $this->methodsExcept = $methods; + + $this->setMethods( + \array_diff( + $this->generator->getClassMethods($this->type), + $this->methodsExcept + ) + ); + + return $this; + } + + /** + * Specifies the arguments for the constructor. + * + * @param array $args + * + * @return MockBuilder + */ + public function setConstructorArgs(array $args) + { + $this->constructorArgs = $args; + + return $this; + } + + /** + * Specifies the name for the mock class. + * + * @param string $name + * + * @return MockBuilder + */ + public function setMockClassName($name) + { + $this->mockClassName = $name; + + return $this; + } + + /** + * Disables the invocation of the original constructor. + * + * @return MockBuilder + */ + public function disableOriginalConstructor() + { + $this->originalConstructor = false; + + return $this; + } + + /** + * Enables the invocation of the original constructor. + * + * @return MockBuilder + */ + public function enableOriginalConstructor() + { + $this->originalConstructor = true; + + return $this; + } + + /** + * Disables the invocation of the original clone constructor. + * + * @return MockBuilder + */ + public function disableOriginalClone() + { + $this->originalClone = false; + + return $this; + } + + /** + * Enables the invocation of the original clone constructor. + * + * @return MockBuilder + */ + public function enableOriginalClone() + { + $this->originalClone = true; + + return $this; + } + + /** + * Disables the use of class autoloading while creating the mock object. + * + * @return MockBuilder + */ + public function disableAutoload() + { + $this->autoload = false; + + return $this; + } + + /** + * Enables the use of class autoloading while creating the mock object. + * + * @return MockBuilder + */ + public function enableAutoload() + { + $this->autoload = true; + + return $this; + } + + /** + * Disables the cloning of arguments passed to mocked methods. + * + * @return MockBuilder + */ + public function disableArgumentCloning() + { + $this->cloneArguments = false; + + return $this; + } + + /** + * Enables the cloning of arguments passed to mocked methods. + * + * @return MockBuilder + */ + public function enableArgumentCloning() + { + $this->cloneArguments = true; + + return $this; + } + + /** + * Enables the invocation of the original methods. + * + * @return MockBuilder + */ + public function enableProxyingToOriginalMethods() + { + $this->callOriginalMethods = true; + + return $this; + } + + /** + * Disables the invocation of the original methods. + * + * @return MockBuilder + */ + public function disableProxyingToOriginalMethods() + { + $this->callOriginalMethods = false; + $this->proxyTarget = null; + + return $this; + } + + /** + * Sets the proxy target. + * + * @param object $object + * + * @return MockBuilder + */ + public function setProxyTarget($object) + { + $this->proxyTarget = $object; + + return $this; + } + + /** + * @return MockBuilder + */ + public function allowMockingUnknownTypes() + { + $this->allowMockingUnknownTypes = true; + + return $this; + } + + /** + * @return MockBuilder + */ + public function disallowMockingUnknownTypes() + { + $this->allowMockingUnknownTypes = false; + + return $this; + } +}