156 lines
4.2 KiB
PHP
156 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace spec\Prophecy\Argument\Token;
|
|
|
|
use PhpSpec\ObjectBehavior;
|
|
|
|
class ExactValueTokenSpec extends ObjectBehavior
|
|
{
|
|
function let()
|
|
{
|
|
$this->beConstructedWith(42);
|
|
}
|
|
|
|
function it_implements_TokenInterface()
|
|
{
|
|
$this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
|
|
}
|
|
|
|
function it_is_not_last()
|
|
{
|
|
$this->shouldNotBeLast();
|
|
}
|
|
|
|
function it_holds_value()
|
|
{
|
|
$this->getValue()->shouldReturn(42);
|
|
}
|
|
|
|
function it_scores_10_if_value_is_equal_to_argument()
|
|
{
|
|
$this->scoreArgument(42)->shouldReturn(10);
|
|
$this->scoreArgument('42')->shouldReturn(10);
|
|
}
|
|
|
|
function it_scores_10_if_value_is_an_object_and_equal_to_argument()
|
|
{
|
|
$value = new \DateTime();
|
|
$value2 = clone $value;
|
|
|
|
$this->beConstructedWith($value);
|
|
$this->scoreArgument($value2)->shouldReturn(10);
|
|
}
|
|
|
|
function it_does_not_scores_if_value_is_not_equal_to_argument()
|
|
{
|
|
$this->scoreArgument(50)->shouldReturn(false);
|
|
$this->scoreArgument(new \stdClass())->shouldReturn(false);
|
|
}
|
|
|
|
function it_does_not_scores_if_value_an_object_and_is_not_equal_to_argument()
|
|
{
|
|
$value = new ExactValueTokenFixtureB('ABC');
|
|
$value2 = new ExactValueTokenFixtureB('CBA');
|
|
|
|
$this->beConstructedWith($value);
|
|
$this->scoreArgument($value2)->shouldReturn(false);
|
|
}
|
|
|
|
function it_does_not_scores_if_value_type_and_is_not_equal_to_argument()
|
|
{
|
|
$this->beConstructedWith(false);
|
|
$this->scoreArgument(0)->shouldReturn(false);
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_integer()
|
|
{
|
|
$this->beConstructedWith(42);
|
|
$this->__toString()->shouldReturn('exact(42)');
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_string()
|
|
{
|
|
$this->beConstructedWith('some string');
|
|
$this->__toString()->shouldReturn('exact("some string")');
|
|
}
|
|
|
|
function it_generates_single_line_representation_for_multiline_string()
|
|
{
|
|
$this->beConstructedWith("some\nstring");
|
|
$this->__toString()->shouldReturn('exact("some\\nstring")');
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_double()
|
|
{
|
|
$this->beConstructedWith(42.3);
|
|
$this->__toString()->shouldReturn('exact(42.3)');
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_boolean_true()
|
|
{
|
|
$this->beConstructedWith(true);
|
|
$this->__toString()->shouldReturn('exact(true)');
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_boolean_false()
|
|
{
|
|
$this->beConstructedWith(false);
|
|
$this->__toString()->shouldReturn('exact(false)');
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_null()
|
|
{
|
|
$this->beConstructedWith(null);
|
|
$this->__toString()->shouldReturn('exact(null)');
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_empty_array()
|
|
{
|
|
$this->beConstructedWith(array());
|
|
$this->__toString()->shouldReturn('exact([])');
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_array()
|
|
{
|
|
$this->beConstructedWith(array('zet', 42));
|
|
$this->__toString()->shouldReturn('exact(["zet", 42])');
|
|
}
|
|
|
|
function it_generates_proper_string_representation_for_resource()
|
|
{
|
|
$resource = fopen(__FILE__, 'r');
|
|
$this->beConstructedWith($resource);
|
|
$this->__toString()->shouldReturn('exact(stream:'.$resource.')');
|
|
}
|
|
|
|
/**
|
|
* @param \stdClass $object
|
|
*/
|
|
function it_generates_proper_string_representation_for_object($object)
|
|
{
|
|
$objHash = sprintf('%s:%s',
|
|
get_class($object->getWrappedObject()),
|
|
spl_object_hash($object->getWrappedObject())
|
|
);
|
|
|
|
$this->beConstructedWith($object);
|
|
$this->__toString()->shouldReturn("exact($objHash Object (\n 'objectProphecy' => Prophecy\Prophecy\ObjectProphecy Object (*Prophecy*)\n))");
|
|
}
|
|
}
|
|
|
|
class ExactValueTokenFixtureA
|
|
{
|
|
public $errors;
|
|
}
|
|
|
|
class ExactValueTokenFixtureB extends ExactValueTokenFixtureA
|
|
{
|
|
public $errors;
|
|
public $value = null;
|
|
|
|
public function __construct($value)
|
|
{
|
|
$this->value = $value;
|
|
}
|
|
}
|