diff --git a/src/Symfony/Component/OptionsResolver/Tests/OptionsResolver2Dot6Test.php b/src/Symfony/Component/OptionsResolver/Tests/OptionsResolver2Dot6Test.php index 367ee3fecd..9158c5ba06 100644 --- a/src/Symfony/Component/OptionsResolver/Tests/OptionsResolver2Dot6Test.php +++ b/src/Symfony/Component/OptionsResolver/Tests/OptionsResolver2Dot6Test.php @@ -499,27 +499,28 @@ class OptionsResolver2Dot6Test extends \PHPUnit_Framework_TestCase } /** - * @expectedException \Symfony\Component\OptionsResolver\Exception\InvalidOptionsException - * @expectedExceptionMessage The option "foo" with value 42 is expected to be of type "string", but is of type "integer". + * @dataProvider provideInvalidTypes */ - public function testResolveFailsIfInvalidType() + public function testResolveFailsIfInvalidType($actualType, $allowedType, $exceptionMessage) { - $this->resolver->setDefined('foo'); - $this->resolver->setAllowedTypes('foo', 'string'); - - $this->resolver->resolve(array('foo' => 42)); + $this->resolver->setDefined('option'); + $this->resolver->setAllowedTypes('option', $allowedType); + $this->setExpectedException('Symfony\Component\OptionsResolver\Exception\InvalidOptionsException', $exceptionMessage); + $this->resolver->resolve(array('option' => $actualType)); } - /** - * @expectedException \Symfony\Component\OptionsResolver\Exception\InvalidOptionsException - * @expectedExceptionMessage The option "foo" with value null is expected to be of type "string", but is of type "NULL". - */ - public function testResolveFailsIfInvalidTypeIsNull() + public function provideInvalidTypes() { - $this->resolver->setDefault('foo', null); - $this->resolver->setAllowedTypes('foo', 'string'); - - $this->resolver->resolve(); + return array( + array(true, 'string', 'The option "option" with value true is expected to be of type "string", but is of type "boolean".'), + array(false, 'string', 'The option "option" with value false is expected to be of type "string", but is of type "boolean".'), + array(fopen(__FILE__, 'r'), 'string', 'The option "option" with value resource is expected to be of type "string", but is of type "resource".'), + array(array(), 'string', 'The option "option" with value array is expected to be of type "string", but is of type "array".'), + array(new OptionsResolver(), 'string', 'The option "option" with value Symfony\Component\OptionsResolver\OptionsResolver is expected to be of type "string", but is of type "Symfony\Component\OptionsResolver\OptionsResolver".'), + array(42, 'string', 'The option "option" with value 42 is expected to be of type "string", but is of type "integer".'), + array(null, 'string', 'The option "option" with value null is expected to be of type "string", but is of type "NULL".'), + array('bar', '\stdClass', 'The option "option" with value "bar" is expected to be of type "\stdClass", but is of type "string".'), + ); } public function testResolveSucceedsIfValidType() @@ -550,17 +551,6 @@ class OptionsResolver2Dot6Test extends \PHPUnit_Framework_TestCase $this->assertNotEmpty($this->resolver->resolve()); } - /** - * @expectedException \Symfony\Component\OptionsResolver\Exception\InvalidOptionsException - */ - public function testResolveFailsIfNotInstanceOfClass() - { - $this->resolver->setDefault('foo', 'bar'); - $this->resolver->setAllowedTypes('foo', '\stdClass'); - - $this->resolver->resolve(); - } - public function testResolveSucceedsIfInstanceOfClass() { $this->resolver->setDefault('foo', new \stdClass());