From 5a53821ca34ea3f71c74be9985a24467bcdc77a6 Mon Sep 17 00:00:00 2001 From: Tobias Schultze Date: Sun, 29 Jul 2012 18:01:50 +0300 Subject: [PATCH] [OptionsResolver] fix removing normalizers --- .../Component/OptionsResolver/Options.php | 1 + .../OptionsResolver/Tests/OptionsTest.php | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/src/Symfony/Component/OptionsResolver/Options.php b/src/Symfony/Component/OptionsResolver/Options.php index ef10a19427..5a2b0f7f38 100644 --- a/src/Symfony/Component/OptionsResolver/Options.php +++ b/src/Symfony/Component/OptionsResolver/Options.php @@ -143,6 +143,7 @@ class Options implements \ArrayAccess, \Iterator, \Countable $this->options = array(); $this->lazy = array(); + $this->normalizers = array(); foreach ($options as $option => $value) { $this->overload($option, $value); diff --git a/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php b/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php index e151051611..66f9e399a4 100644 --- a/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php +++ b/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php @@ -469,4 +469,49 @@ class OptionsTest extends \PHPUnit_Framework_TestCase $this->assertTrue($this->options->has('foo')); } + + public function testRemoveOptionAndNormalizer() + { + $this->options->set('foo1', 'bar'); + $this->options->setNormalizer('foo1', function (Options $options) { + return ''; + }); + $this->options->set('foo2', 'bar'); + $this->options->setNormalizer('foo2', function (Options $options) { + return ''; + }); + + $this->options->remove('foo2'); + $this->assertEquals(array('foo1' => ''), $this->options->all()); + } + + public function testReplaceOptionAndNormalizer() + { + $this->options->set('foo1', 'bar'); + $this->options->setNormalizer('foo1', function (Options $options) { + return ''; + }); + $this->options->set('foo2', 'bar'); + $this->options->setNormalizer('foo2', function (Options $options) { + return ''; + }); + + $this->options->replace(array('foo1' => 'new')); + $this->assertEquals(array('foo1' => 'new'), $this->options->all()); + } + + public function testClearOptionAndNormalizer() + { + $this->options->set('foo1', 'bar'); + $this->options->setNormalizer('foo1', function (Options $options) { + return ''; + }); + $this->options->set('foo2', 'bar'); + $this->options->setNormalizer('foo2', function (Options $options) { + return ''; + }); + + $this->options->clear(); + $this->assertEmpty($this->options->all()); + } }