radarrplexorganizrnginxsonarrdashboardserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpc
		
		
		
		
			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)); | |
|     } | |
| }
 | |
| 
 |