You are here

ExactValueTokenSpec.php in Zircon Profile 8.0

File

vendor/phpspec/prophecy/spec/Prophecy/Argument/Token/ExactValueTokenSpec.php
View source
<?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;
  }

}