Файл: gapps/vendor/sebastian/recursion-context/tests/ContextTest.php
Строк: 191
<?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 SebastianBergmannRecursionContext;
use PHPUnit_Framework_TestCase;
/**
* @covers SebastianBergmannRecursionContextContext
*/
class ContextTest extends PHPUnit_Framework_TestCase
{
/**
* @var SebastianBergmannRecursionContextContext
*/
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,"Testrn",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 = "thisnisnanverynverynverynverynverynveryrlongnrtext";
$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 SebastianBergmannRecursionContextContext::add
* @uses SebastianBergmannRecursionContextInvalidArgumentException
* @dataProvider failsProvider
*/
public function testAddFails($value)
{
$this->setExpectedException(
'SebastianBergmann\RecursionContext\Exception',
'Only arrays and objects are supported'
);
$this->context->add($value);
}
/**
* @covers SebastianBergmannRecursionContextContext::contains
* @uses SebastianBergmannRecursionContextInvalidArgumentException
* @dataProvider failsProvider
*/
public function testContainsFails($value)
{
$this->setExpectedException(
'SebastianBergmann\RecursionContext\Exception',
'Only arrays and objects are supported'
);
$this->context->contains($value);
}
/**
* @covers SebastianBergmannRecursionContextContext::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 SebastianBergmannRecursionContextContext::contains
* @uses SebastianBergmannRecursionContextContext::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 SebastianBergmannRecursionContextContext::contains
* @dataProvider valuesProvider
*/
public function testContainsNotFound($value)
{
$this->assertFalse($this->context->contains($value));
}
}