You are here

FactoryTest.php in Zircon Profile 8

File

vendor/sebastian/comparator/tests/FactoryTest.php
View source
<?php

/*
 * This file is part of the Comparator 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 SebastianBergmann\Comparator;


/**
 * @coversDefaultClass SebastianBergmann\Comparator\Factory
 *
 */
class FactoryTest extends \PHPUnit_Framework_TestCase {
  public function instanceProvider() {
    $tmpfile = tmpfile();
    return array(
      array(
        NULL,
        NULL,
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        NULL,
        TRUE,
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        TRUE,
        NULL,
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        TRUE,
        TRUE,
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        FALSE,
        FALSE,
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        TRUE,
        FALSE,
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        FALSE,
        TRUE,
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        '',
        '',
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        '0',
        '0',
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        '0',
        0,
        'SebastianBergmann\\Comparator\\NumericComparator',
      ),
      array(
        0,
        '0',
        'SebastianBergmann\\Comparator\\NumericComparator',
      ),
      array(
        0,
        0,
        'SebastianBergmann\\Comparator\\NumericComparator',
      ),
      array(
        1.0,
        0,
        'SebastianBergmann\\Comparator\\DoubleComparator',
      ),
      array(
        0,
        1.0,
        'SebastianBergmann\\Comparator\\DoubleComparator',
      ),
      array(
        1.0,
        1.0,
        'SebastianBergmann\\Comparator\\DoubleComparator',
      ),
      array(
        array(
          1,
        ),
        array(
          1,
        ),
        'SebastianBergmann\\Comparator\\ArrayComparator',
      ),
      array(
        $tmpfile,
        $tmpfile,
        'SebastianBergmann\\Comparator\\ResourceComparator',
      ),
      array(
        new \stdClass(),
        new \stdClass(),
        'SebastianBergmann\\Comparator\\ObjectComparator',
      ),
      array(
        new \DateTime(),
        new \DateTime(),
        'SebastianBergmann\\Comparator\\DateTimeComparator',
      ),
      array(
        new \SplObjectStorage(),
        new \SplObjectStorage(),
        'SebastianBergmann\\Comparator\\SplObjectStorageComparator',
      ),
      array(
        new \Exception(),
        new \Exception(),
        'SebastianBergmann\\Comparator\\ExceptionComparator',
      ),
      array(
        new \DOMDocument(),
        new \DOMDocument(),
        'SebastianBergmann\\Comparator\\DOMNodeComparator',
      ),
      // mixed types
      array(
        $tmpfile,
        array(
          1,
        ),
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        array(
          1,
        ),
        $tmpfile,
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        $tmpfile,
        '1',
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        '1',
        $tmpfile,
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        $tmpfile,
        new \stdClass(),
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        new \stdClass(),
        $tmpfile,
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        new \stdClass(),
        array(
          1,
        ),
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        array(
          1,
        ),
        new \stdClass(),
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        new \stdClass(),
        '1',
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        '1',
        new \stdClass(),
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        new ClassWithToString(),
        '1',
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        '1',
        new ClassWithToString(),
        'SebastianBergmann\\Comparator\\ScalarComparator',
      ),
      array(
        1.0,
        new \stdClass(),
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        new \stdClass(),
        1.0,
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        1.0,
        array(
          1,
        ),
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
      array(
        array(
          1,
        ),
        1.0,
        'SebastianBergmann\\Comparator\\TypeComparator',
      ),
    );
  }

  /**
   * @dataProvider instanceProvider
   * @covers       ::getComparatorFor
   * @covers       ::__construct
   */
  public function testGetComparatorFor($a, $b, $expected) {
    $factory = new Factory();
    $actual = $factory
      ->getComparatorFor($a, $b);
    $this
      ->assertInstanceOf($expected, $actual);
  }

  /**
   * @covers ::register
   */
  public function testRegister() {
    $comparator = new TestClassComparator();
    $factory = new Factory();
    $factory
      ->register($comparator);
    $a = new TestClass();
    $b = new TestClass();
    $expected = 'SebastianBergmann\\Comparator\\TestClassComparator';
    $actual = $factory
      ->getComparatorFor($a, $b);
    $factory
      ->unregister($comparator);
    $this
      ->assertInstanceOf($expected, $actual);
  }

  /**
   * @covers ::unregister
   */
  public function testUnregister() {
    $comparator = new TestClassComparator();
    $factory = new Factory();
    $factory
      ->register($comparator);
    $factory
      ->unregister($comparator);
    $a = new TestClass();
    $b = new TestClass();
    $expected = 'SebastianBergmann\\Comparator\\ObjectComparator';
    $actual = $factory
      ->getComparatorFor($a, $b);
    $this
      ->assertInstanceOf($expected, $actual);
  }

}

Classes

Namesort descending Description
FactoryTest @coversDefaultClass SebastianBergmann\Comparator\Factory