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;
+    }
+}