first commit
This commit is contained in:
144
vendor/sebastian/recursion-context/tests/ContextTest.php
vendored
Normal file
144
vendor/sebastian/recursion-context/tests/ContextTest.php
vendored
Normal file
@ -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));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user