sonarrradarrplexorganizrnginxdashboardlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximux
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							142 lines
						
					
					
						
							4.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							142 lines
						
					
					
						
							4.0 KiB
						
					
					
				
								<?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));
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |