@@ -185,6 +185,38 @@ public function testFailsIfExpressionCouldNotBeEvaluated()
185185 $ validator ->validate ($ parameter , $ argument );
186186 }
187187
188+ public function testContainerReferenceArgumentDoesNotFail ()
189+ {
190+ $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithContainerInterfaceConstructorArgument ' ;
191+
192+ $ parameter = new \ReflectionParameter (array ($ class , '__construct ' ), 'container ' );
193+ $ argument = new Reference ('service_container ' );
194+
195+ $ validator = new ArgumentValidator (new ContainerBuilder (), $ this ->createMockResultingClassResolver ());
196+
197+ $ validator ->validate ($ parameter , $ argument );
198+ }
199+
200+ public function testFailsIfContainerReferenceArgumentIsInjectedForParameterWithIncompatibleTypeHint ()
201+ {
202+ $ class = 'Matthias\SymfonyServiceDefinitionValidator\Tests\Fixtures\ClassWithTypeHintedConstructorArgument ' ;
203+
204+ $ parameter = new \ReflectionParameter (array ($ class , '__construct ' ), 'expected ' );
205+ $ argument = new Reference ('service_container ' );
206+
207+ $ classResolver = $ this ->createMockResultingClassResolver ();
208+ $ classResolver
209+ ->expects ($ this ->any ())
210+ ->method ('resolve ' )
211+ ->with (new Definition ('Symfony\Component\DependencyInjection\Container ' ))
212+ ->willReturn ('Symfony\Component\DependencyInjection\Container ' );
213+ $ validator = new ArgumentValidator (new ContainerBuilder (), $ classResolver );
214+
215+ $ this ->setExpectedException ('Matthias\SymfonyServiceDefinitionValidator\Exception\TypeHintMismatchException ' , 'ExpectedClass ' );
216+
217+ $ validator ->validate ($ parameter , $ argument );
218+ }
219+
188220 private function createMockResultingClassResolver ()
189221 {
190222 return $ this ->getMock ('Matthias\SymfonyServiceDefinitionValidator\ResultingClassResolverInterface ' );
0 commit comments