4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Config\Tests\Definition\Builder;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\Config\Definition\Builder\FloatNodeDefinition;
16 use Symfony\Component\Config\Definition\Builder\IntegerNodeDefinition;
17 use Symfony\Component\Config\Definition\Builder\IntegerNodeDefinition as NumericNodeDefinition;
19 class NumericNodeDefinitionTest extends TestCase
22 * @expectedException \InvalidArgumentException
23 * @expectedExceptionMessage You cannot define a min(4) as you already have a max(3)
25 public function testIncoherentMinAssertion()
27 $def = new NumericNodeDefinition('foo');
32 * @expectedException \InvalidArgumentException
33 * @expectedExceptionMessage You cannot define a max(2) as you already have a min(3)
35 public function testIncoherentMaxAssertion()
37 $node = new NumericNodeDefinition('foo');
38 $node->min(3)->max(2);
42 * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
43 * @expectedExceptionMessage The value 4 is too small for path "foo". Should be greater than or equal to 5
45 public function testIntegerMinAssertion()
47 $def = new IntegerNodeDefinition('foo');
48 $def->min(5)->getNode()->finalize(4);
52 * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
53 * @expectedExceptionMessage The value 4 is too big for path "foo". Should be less than or equal to 3
55 public function testIntegerMaxAssertion()
57 $def = new IntegerNodeDefinition('foo');
58 $def->max(3)->getNode()->finalize(4);
61 public function testIntegerValidMinMaxAssertion()
63 $def = new IntegerNodeDefinition('foo');
64 $node = $def->min(3)->max(7)->getNode();
65 $this->assertEquals(4, $node->finalize(4));
69 * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
70 * @expectedExceptionMessage The value 400 is too small for path "foo". Should be greater than or equal to 500
72 public function testFloatMinAssertion()
74 $def = new FloatNodeDefinition('foo');
75 $def->min(5E2)->getNode()->finalize(4e2);
79 * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException
80 * @expectedExceptionMessage The value 4.3 is too big for path "foo". Should be less than or equal to 0.3
82 public function testFloatMaxAssertion()
84 $def = new FloatNodeDefinition('foo');
85 $def->max(0.3)->getNode()->finalize(4.3);
88 public function testFloatValidMinMaxAssertion()
90 $def = new FloatNodeDefinition('foo');
91 $node = $def->min(3.0)->max(7e2)->getNode();
92 $this->assertEquals(4.5, $node->finalize(4.5));
96 * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidDefinitionException
97 * @expectedExceptionMessage ->cannotBeEmpty() is not applicable to NumericNodeDefinition.
99 public function testCannotBeEmptyThrowsAnException()
101 $def = new NumericNodeDefinition('foo');
102 $def->cannotBeEmpty();