diff options
Diffstat (limited to 'vendor/sebastian/recursion-context/tests/ContextTest.php')
-rw-r--r-- | vendor/sebastian/recursion-context/tests/ContextTest.php | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/vendor/sebastian/recursion-context/tests/ContextTest.php b/vendor/sebastian/recursion-context/tests/ContextTest.php new file mode 100644 index 0000000..cee0bcf --- /dev/null +++ b/vendor/sebastian/recursion-context/tests/ContextTest.php @@ -0,0 +1,144 @@ +<?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 PHPUnit_Framework_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->setExpectedException( + 'SebastianBergmann\\RecursionContext\\Exception', + '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->setExpectedException( + 'SebastianBergmann\\RecursionContext\\Exception', + '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)); + } +} |