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