@@ -185,6 +185,38 @@ public function testFailsIfExpressionCouldNotBeEvaluated()
185
185
$ validator ->validate ($ parameter , $ argument );
186
186
}
187
187
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
+
188
220
private function createMockResultingClassResolver ()
189
221
{
190
222
return $ this ->getMock ('Matthias\SymfonyServiceDefinitionValidator\ResultingClassResolverInterface ' );
0 commit comments