Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/sebastian/comparator/tests/SplObjectStorageComparatorTest.php
<?php
/*
 * This file is part of sebastian/comparator.
 *
 * (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;

use
PHPUnit\Framework\TestCase;
use
SplObjectStorage;
use
stdClass;

/**
 * @coversDefaultClass SebastianBergmann\Comparator\SplObjectStorageComparator
 *
 * @uses SebastianBergmann\Comparator\Comparator
 * @uses SebastianBergmann\Comparator\Factory
 * @uses SebastianBergmann\Comparator\ComparisonFailure
 */
class SplObjectStorageComparatorTest extends TestCase
{
    private
$comparator;

    protected function
setUp()
    {
       
$this->comparator = new SplObjectStorageComparator;
    }

    public function
acceptsFailsProvider()
    {
        return [
          [new
SplObjectStorage, new stdClass],
          [new
stdClass, new SplObjectStorage],
          [new
stdClass, new stdClass]
        ];
    }

    public function
assertEqualsSucceedsProvider()
    {
       
$object1 = new stdClass();
       
$object2 = new stdClass();

       
$storage1 = new SplObjectStorage();
       
$storage2 = new SplObjectStorage();

       
$storage3 = new SplObjectStorage();
       
$storage3->attach($object1);
       
$storage3->attach($object2);

       
$storage4 = new SplObjectStorage();
       
$storage4->attach($object2);
       
$storage4->attach($object1);

        return [
          [
$storage1, $storage1],
          [
$storage1, $storage2],
          [
$storage3, $storage3],
          [
$storage3, $storage4]
        ];
    }

    public function
assertEqualsFailsProvider()
    {
       
$object1 = new stdClass;
       
$object2 = new stdClass;

       
$storage1 = new SplObjectStorage;

       
$storage2 = new SplObjectStorage;
       
$storage2->attach($object1);

       
$storage3 = new SplObjectStorage;
       
$storage3->attach($object2);
       
$storage3->attach($object1);

        return [
          [
$storage1, $storage2],
          [
$storage1, $storage3],
          [
$storage2, $storage3],
        ];
    }

   
/**
     * @covers  ::accepts
     */
   
public function testAcceptsSucceeds()
    {
       
$this->assertTrue(
         
$this->comparator->accepts(
            new
SplObjectStorage,
            new
SplObjectStorage
         
)
        );
    }

   
/**
     * @covers       ::accepts
     * @dataProvider acceptsFailsProvider
     */
   
public function testAcceptsFails($expected, $actual)
    {
       
$this->assertFalse(
         
$this->comparator->accepts($expected, $actual)
        );
    }

   
/**
     * @covers       ::assertEquals
     * @dataProvider assertEqualsSucceedsProvider
     */
   
public function testAssertEqualsSucceeds($expected, $actual)
    {
       
$exception = null;

        try {
           
$this->comparator->assertEquals($expected, $actual);
        } catch (
ComparisonFailure $exception) {
        }

       
$this->assertNull($exception, 'Unexpected ComparisonFailure');
    }

   
/**
     * @covers       ::assertEquals
     * @dataProvider assertEqualsFailsProvider
     */
   
public function testAssertEqualsFails($expected, $actual)
    {
       
$this->expectException(ComparisonFailure::class);
       
$this->expectExceptionMessage('Failed asserting that two objects are equal.');

       
$this->comparator->assertEquals($expected, $actual);
    }

    public function
testAssertEqualsFails2()
    {
       
$this->expectException(ComparisonFailure::class);
       
$this->expectExceptionMessage('Failed asserting that two objects are equal.');

       
$t = new SplObjectStorage();
       
$t->attach(new \stdClass());

       
$this->comparator->assertEquals($t, new \SplObjectStorage());
    }
}