You are here

MockBuilder.php in Zircon Profile 8

File

vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php
View source
<?php

/*
 * This file is part of the PHPUnit_MockObject 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.
 */

/**
 * Implementation of the Builder pattern for Mock objects.
 *
 * @since      File available since Release 1.0.0
 */
class PHPUnit_Framework_MockObject_MockBuilder {

  /**
   * @var PHPUnit_Framework_TestCase
   */
  private $testCase;

  /**
   * @var string
   */
  private $type;

  /**
   * @var array
   */
  private $methods = array();

  /**
   * @var string
   */
  private $mockClassName = '';

  /**
   * @var array
   */
  private $constructorArgs = array();

  /**
   * @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;

  /**
   * @param PHPUnit_Framework_TestCase $testCase
   * @param array|string               $type
   */
  public function __construct(PHPUnit_Framework_TestCase $testCase, $type) {
    $this->testCase = $testCase;
    $this->type = $type;
  }

  /**
   * Creates a mock object using a fluent interface.
   *
   * @return PHPUnit_Framework_MockObject_MockObject
   */
  public function getMock() {
    return $this->testCase
      ->getMock($this->type, $this->methods, $this->constructorArgs, $this->mockClassName, $this->originalConstructor, $this->originalClone, $this->autoload, $this->cloneArguments, $this->callOriginalMethods, $this->proxyTarget);
  }

  /**
   * Creates a mock object for an abstract class using a fluent interface.
   *
   * @return PHPUnit_Framework_MockObject_MockObject
   */
  public function getMockForAbstractClass() {
    return $this->testCase
      ->getMockForAbstractClass($this->type, $this->constructorArgs, $this->mockClassName, $this->originalConstructor, $this->originalClone, $this->autoload, $this->methods, $this->cloneArguments);
  }

  /**
   * Creates a mock object for a trait using a fluent interface.
   *
   * @return PHPUnit_Framework_MockObject_MockObject
   */
  public function getMockForTrait() {
    return $this->testCase
      ->getMockForTrait($this->type, $this->constructorArgs, $this->mockClassName, $this->originalConstructor, $this->originalClone, $this->autoload, $this->methods, $this->cloneArguments);
  }

  /**
   * Specifies the subset of methods to mock. Default is to mock all of them.
   *
   * @param  array|null                               $methods
   * @return PHPUnit_Framework_MockObject_MockBuilder
   */
  public function setMethods($methods) {
    $this->methods = $methods;
    return $this;
  }

  /**
   * Specifies the arguments for the constructor.
   *
   * @param  array                                    $args
   * @return PHPUnit_Framework_MockObject_MockBuilder
   */
  public function setConstructorArgs(array $args) {
    $this->constructorArgs = $args;
    return $this;
  }

  /**
   * Specifies the name for the mock class.
   *
   * @param  string                                   $name
   * @return PHPUnit_Framework_MockObject_MockBuilder
   */
  public function setMockClassName($name) {
    $this->mockClassName = $name;
    return $this;
  }

  /**
   * Disables the invocation of the original constructor.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   */
  public function disableOriginalConstructor() {
    $this->originalConstructor = false;
    return $this;
  }

  /**
   * Enables the invocation of the original constructor.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   * @since  Method available since Release 1.2.0
   */
  public function enableOriginalConstructor() {
    $this->originalConstructor = true;
    return $this;
  }

  /**
   * Disables the invocation of the original clone constructor.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   */
  public function disableOriginalClone() {
    $this->originalClone = false;
    return $this;
  }

  /**
   * Enables the invocation of the original clone constructor.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   * @since  Method available since Release 1.2.0
   */
  public function enableOriginalClone() {
    $this->originalClone = true;
    return $this;
  }

  /**
   * Disables the use of class autoloading while creating the mock object.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   */
  public function disableAutoload() {
    $this->autoload = false;
    return $this;
  }

  /**
   * Enables the use of class autoloading while creating the mock object.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   * @since  Method available since Release 1.2.0
   */
  public function enableAutoload() {
    $this->autoload = true;
    return $this;
  }

  /**
   * Disables the cloning of arguments passed to mocked methods.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   * @since  Method available since Release 1.2.0
   */
  public function disableArgumentCloning() {
    $this->cloneArguments = false;
    return $this;
  }

  /**
   * Enables the cloning of arguments passed to mocked methods.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   * @since  Method available since Release 1.2.0
   */
  public function enableArgumentCloning() {
    $this->cloneArguments = true;
    return $this;
  }

  /**
   * Enables the invocation of the original methods.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   * @since  Method available since Release 2.0.0
   */
  public function enableProxyingToOriginalMethods() {
    $this->callOriginalMethods = true;
    return $this;
  }

  /**
   * Disables the invocation of the original methods.
   *
   * @return PHPUnit_Framework_MockObject_MockBuilder
   * @since  Method available since Release 2.0.0
   */
  public function disableProxyingToOriginalMethods() {
    $this->callOriginalMethods = false;
    $this->proxyTarget = null;
    return $this;
  }

  /**
   * Sets the proxy target.
   *
   * @param  object                                   $object
   * @return PHPUnit_Framework_MockObject_MockBuilder
   * @since  Method available since Release 2.0.0
   */
  public function setProxyTarget($object) {
    $this->proxyTarget = $object;
    return $this;
  }

}

Classes

Namesort descending Description
PHPUnit_Framework_MockObject_MockBuilder Implementation of the Builder pattern for Mock objects.