123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- <?php
- /*
- * This file is part of the Recursion Context 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\RecursionContext;
-
- use PHPUnit\Framework\TestCase;
-
- /**
- * @covers SebastianBergmann\RecursionContext\Context
- */
- class ContextTest extends TestCase
- {
- /**
- * @var \SebastianBergmann\RecursionContext\Context
- */
- private $context;
-
- protected function setUp()
- {
- $this->context = new Context();
- }
-
- public function failsProvider()
- {
- return array(
- array(true),
- array(false),
- array(null),
- array('string'),
- array(1),
- array(1.5),
- array(fopen('php://memory', 'r'))
- );
- }
-
- public function valuesProvider()
- {
- $obj2 = new \stdClass();
- $obj2->foo = 'bar';
-
- $obj3 = (object) array(1,2,"Test\r\n",4,5,6,7,8);
-
- $obj = new \stdClass();
- //@codingStandardsIgnoreStart
- $obj->null = null;
- //@codingStandardsIgnoreEnd
- $obj->boolean = true;
- $obj->integer = 1;
- $obj->double = 1.2;
- $obj->string = '1';
- $obj->text = "this\nis\na\nvery\nvery\nvery\nvery\nvery\nvery\rlong\n\rtext";
- $obj->object = $obj2;
- $obj->objectagain = $obj2;
- $obj->array = array('foo' => 'bar');
- $obj->array2 = array(1,2,3,4,5,6);
- $obj->array3 = array($obj, $obj2, $obj3);
- $obj->self = $obj;
-
- $storage = new \SplObjectStorage();
- $storage->attach($obj2);
- $storage->foo = $obj2;
-
- return array(
- array($obj, spl_object_hash($obj)),
- array($obj2, spl_object_hash($obj2)),
- array($obj3, spl_object_hash($obj3)),
- array($storage, spl_object_hash($storage)),
- array($obj->array, 0),
- array($obj->array2, 0),
- array($obj->array3, 0)
- );
- }
-
- /**
- * @covers SebastianBergmann\RecursionContext\Context::add
- * @uses SebastianBergmann\RecursionContext\InvalidArgumentException
- * @dataProvider failsProvider
- */
- public function testAddFails($value)
- {
- $this->expectException(Exception::class);
- $this->expectExceptionMessage('Only arrays and objects are supported');
-
- $this->context->add($value);
- }
-
- /**
- * @covers SebastianBergmann\RecursionContext\Context::contains
- * @uses SebastianBergmann\RecursionContext\InvalidArgumentException
- * @dataProvider failsProvider
- */
- public function testContainsFails($value)
- {
- $this->expectException(Exception::class);
- $this->expectExceptionMessage('Only arrays and objects are supported');
-
- $this->context->contains($value);
- }
-
- /**
- * @covers SebastianBergmann\RecursionContext\Context::add
- * @dataProvider valuesProvider
- */
- public function testAdd($value, $key)
- {
- $this->assertEquals($key, $this->context->add($value));
-
- // Test we get the same key on subsequent adds
- $this->assertEquals($key, $this->context->add($value));
- }
-
- /**
- * @covers SebastianBergmann\RecursionContext\Context::contains
- * @uses SebastianBergmann\RecursionContext\Context::add
- * @depends testAdd
- * @dataProvider valuesProvider
- */
- public function testContainsFound($value, $key)
- {
- $this->context->add($value);
- $this->assertEquals($key, $this->context->contains($value));
-
- // Test we get the same key on subsequent calls
- $this->assertEquals($key, $this->context->contains($value));
- }
-
- /**
- * @covers SebastianBergmann\RecursionContext\Context::contains
- * @dataProvider valuesProvider
- */
- public function testContainsNotFound($value)
- {
- $this->assertFalse($this->context->contains($value));
- }
- }
|