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); | ||
|  |     } | ||
|  | } |