102 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace spec\Prophecy\Argument\Token;
 | |
| 
 | |
| use PhpSpec\ObjectBehavior;
 | |
| 
 | |
| class ObjectStateTokenSpec extends ObjectBehavior
 | |
| {
 | |
|     function let()
 | |
|     {
 | |
|         $this->beConstructedWith('getName', 'stdClass');
 | |
|     }
 | |
| 
 | |
|     function it_implements_TokenInterface()
 | |
|     {
 | |
|         $this->shouldBeAnInstanceOf('Prophecy\Argument\Token\TokenInterface');
 | |
|     }
 | |
| 
 | |
|     function it_is_not_last()
 | |
|     {
 | |
|         $this->shouldNotBeLast();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param \ReflectionClass $reflection
 | |
|      */
 | |
|     function it_scores_8_if_argument_object_has_specific_method_state($reflection)
 | |
|     {
 | |
|         $reflection->getName()->willReturn('stdClass');
 | |
| 
 | |
|         $this->scoreArgument($reflection)->shouldReturn(8);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param \stdClass $class
 | |
|      */
 | |
|     function it_scores_8_if_argument_object_has_specific_property_state($class)
 | |
|     {
 | |
|         $class->getName = 'stdClass';
 | |
| 
 | |
|         $this->scoreArgument($class)->shouldReturn(8);
 | |
|     }
 | |
| 
 | |
|     function it_does_not_score_if_argument_method_state_does_not_match()
 | |
|     {
 | |
|         $value = new ObjectStateTokenFixtureB('ABC');
 | |
|         $value2 = new ObjectStateTokenFixtureB('CBA');
 | |
| 
 | |
|         $this->beConstructedWith('getSelf', $value);
 | |
|         $this->scoreArgument($value2)->shouldReturn(false);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param \stdClass $class
 | |
|      */
 | |
|     function it_does_not_score_if_argument_property_state_does_not_match($class)
 | |
|     {
 | |
|         $class->getName = 'SplFileInfo';
 | |
| 
 | |
|         $this->scoreArgument($class)->shouldReturn(false);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param \spec\Prophecy\Argument\Token\ObjectStateTokenFixtureA $class
 | |
|      */
 | |
|     function it_does_not_score_if_argument_object_does_not_have_method_or_property($class)
 | |
|     {
 | |
|         $this->scoreArgument($class)->shouldReturn(false);
 | |
|     }
 | |
| 
 | |
|     function it_does_not_score_if_argument_is_not_object()
 | |
|     {
 | |
|         $this->scoreArgument(42)->shouldReturn(false);
 | |
|     }
 | |
| 
 | |
|     function it_has_simple_string_representation()
 | |
|     {
 | |
|         $this->__toString()->shouldReturn('state(getName(), "stdClass")');
 | |
|     }
 | |
| }
 | |
| 
 | |
| class ObjectStateTokenFixtureA
 | |
| {
 | |
|     public $errors;
 | |
| }
 | |
| 
 | |
| class ObjectStateTokenFixtureB extends ObjectStateTokenFixtureA
 | |
| {
 | |
|     public $errors;
 | |
|     public $value = null;
 | |
| 
 | |
|     public function __construct($value)
 | |
|     {
 | |
|         $this->value = $value;
 | |
|     }
 | |
| 
 | |
|     public function getSelf()
 | |
|     {
 | |
|         return $this;
 | |
|     }
 | |
| }
 | 
