| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 | <?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));    }}
 |