Вход Регистрация
Файл: src/vendor/sebastian/comparator/tests/FactoryTest.php
Строк: 199
<?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 SebastianBergmannComparator;

/**
 * @coversDefaultClass SebastianBergmannComparatorFactory
 *
 */
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);
    }
}
Онлайн: 2
Реклама