class PHPUnit_Framework_ComparatorFactory

Factory for comparators which compare values for equality.

@package PHPUnit @subpackage Framework @author Bernhard Schussek <bschussek@2bepublished.at> @copyright 2001-2013 Sebastian Bergmann <sebastian@phpunit.de> @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License @link http://www.phpunit.de/ @since Class available since Release 3.6.0

Hierarchy

Expanded class hierarchy of PHPUnit_Framework_ComparatorFactory

File

drupal/core/vendor/phpunit/phpunit/PHPUnit/Framework/ComparatorFactory.php, line 57

View source
class PHPUnit_Framework_ComparatorFactory {

  /**
   * @var array
   */
  protected $comparators = array();

  /**
   * @var PHPUnit_Framework_ComparatorFactory
   */
  private static $defaultInstance = NULL;

  /**
   * Constructs a new factory.
   */
  public function __construct() {
    $this
      ->register(new PHPUnit_Framework_Comparator_Type());
    $this
      ->register(new PHPUnit_Framework_Comparator_Scalar());
    $this
      ->register(new PHPUnit_Framework_Comparator_Numeric());
    $this
      ->register(new PHPUnit_Framework_Comparator_Double());
    $this
      ->register(new PHPUnit_Framework_Comparator_Array());
    $this
      ->register(new PHPUnit_Framework_Comparator_Resource());
    $this
      ->register(new PHPUnit_Framework_Comparator_Object());
    $this
      ->register(new PHPUnit_Framework_Comparator_Exception());
    $this
      ->register(new PHPUnit_Framework_Comparator_SplObjectStorage());
    $this
      ->register(new PHPUnit_Framework_Comparator_DOMDocument());
    $this
      ->register(new PHPUnit_Framework_Comparator_MockObject());
  }

  /**
   * Returns the default instance.
   *
   * @return PHPUnit_Framework_ComparatorFactory
   */
  public static function getDefaultInstance() {
    if (self::$defaultInstance === NULL) {
      self::$defaultInstance = new PHPUnit_Framework_ComparatorFactory();
    }
    return self::$defaultInstance;
  }

  /**
   * Returns the correct comparator for comparing two values.
   *
   * @param  mixed $expected The first value to compare
   * @param  mixed $actual The second value to compare
   * @return PHPUnit_Framework_Comparator
   * @throws PHPUnit_Framework_Exception
   */
  public function getComparatorFor($expected, $actual) {
    foreach ($this->comparators as $comparator) {
      if ($comparator
        ->accepts($expected, $actual)) {
        return $comparator;
      }
    }
    throw new PHPUnit_Framework_Exception(sprintf('No comparator is registered for comparing the types "%s" and "%s"', gettype($expected), gettype($actual)));
  }

  /**
   * Registers a new comparator.
   *
   * This comparator will be returned by getInstance() if its accept() method
   * returns TRUE for the compared values. It has higher priority than the
   * existing comparators, meaning that its accept() method will be tested
   * before those of the other comparators.
   *
   * @param  PHPUnit_Framework_Comparator $comparator The registered comparator
   */
  public function register(PHPUnit_Framework_Comparator $comparator) {
    array_unshift($this->comparators, $comparator);
    $comparator
      ->setFactory($this);
  }

  /**
   * Unregisters a comparator.
   *
   * This comparator will no longer be returned by getInstance().
   *
   * @param  PHPUnit_Framework_Comparator $comparator The unregistered comparator
   */
  public function unregister(PHPUnit_Framework_Comparator $comparator) {
    foreach ($this->comparators as $key => $_comparator) {
      if ($comparator === $_comparator) {
        unset($this->comparators[$key]);
      }
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
PHPUnit_Framework_ComparatorFactory::$comparators protected property
PHPUnit_Framework_ComparatorFactory::$defaultInstance private static property
PHPUnit_Framework_ComparatorFactory::getComparatorFor public function Returns the correct comparator for comparing two values.
PHPUnit_Framework_ComparatorFactory::getDefaultInstance public static function Returns the default instance.
PHPUnit_Framework_ComparatorFactory::register public function Registers a new comparator.
PHPUnit_Framework_ComparatorFactory::unregister public function Unregisters a comparator.
PHPUnit_Framework_ComparatorFactory::__construct public function Constructs a new factory.