62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace spec\Prophecy\Doubler\ClassPatch;
 | |
| 
 | |
| use PhpSpec\ObjectBehavior;
 | |
| use Prophecy\Argument;
 | |
| 
 | |
| class TraversablePatchSpec extends ObjectBehavior
 | |
| {
 | |
|     function it_is_a_patch()
 | |
|     {
 | |
|         $this->shouldBeAnInstanceOf('Prophecy\Doubler\ClassPatch\ClassPatchInterface');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
 | |
|      */
 | |
|     function it_supports_class_that_implements_only_Traversable($node)
 | |
|     {
 | |
|         $node->getInterfaces()->willReturn(array('Traversable'));
 | |
| 
 | |
|         $this->supports($node)->shouldReturn(true);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
 | |
|      */
 | |
|     function it_does_not_support_class_that_implements_Iterator($node)
 | |
|     {
 | |
|         $node->getInterfaces()->willReturn(array('Traversable', 'Iterator'));
 | |
| 
 | |
|         $this->supports($node)->shouldReturn(false);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
 | |
|      */
 | |
|     function it_does_not_support_class_that_implements_IteratorAggregate($node)
 | |
|     {
 | |
|         $node->getInterfaces()->willReturn(array('Traversable', 'IteratorAggregate'));
 | |
| 
 | |
|         $this->supports($node)->shouldReturn(false);
 | |
|     }
 | |
| 
 | |
|     function it_has_100_priority()
 | |
|     {
 | |
|         $this->getPriority()->shouldReturn(100);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @param \Prophecy\Doubler\Generator\Node\ClassNode $node
 | |
|      */
 | |
|     function it_forces_node_to_implement_IteratorAggregate($node)
 | |
|     {
 | |
|         $node->addInterface('Iterator')->shouldBeCalled();
 | |
| 
 | |
|         $node->addMethod(Argument::type('Prophecy\Doubler\Generator\Node\MethodNode'))->willReturn(null);
 | |
| 
 | |
|         $this->apply($node);
 | |
|     }
 | |
| }
 | 
