View source
<?php
namespace SebastianBergmann\Comparator;
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',
),
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',
),
);
}
public function testGetComparatorFor($a, $b, $expected) {
$factory = new Factory();
$actual = $factory
->getComparatorFor($a, $b);
$this
->assertInstanceOf($expected, $actual);
}
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);
}
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);
}
}