->append($child);
$this->assertCount(3, $this->getField($parent, 'children'));
- $this->assertTrue(in_array($child, $this->getField($parent, 'children')));
+ $this->assertContains($child, $this->getField($parent, 'children'));
}
/**
$this->assertFalse($this->getField($node, 'normalizeKeys'));
}
+ public function testPrototypeVariable()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $this->assertEquals($node->prototype('variable'), $node->variablePrototype());
+ }
+
+ public function testPrototypeScalar()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $this->assertEquals($node->prototype('scalar'), $node->scalarPrototype());
+ }
+
+ public function testPrototypeBoolean()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $this->assertEquals($node->prototype('boolean'), $node->booleanPrototype());
+ }
+
+ public function testPrototypeInteger()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $this->assertEquals($node->prototype('integer'), $node->integerPrototype());
+ }
+
+ public function testPrototypeFloat()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $this->assertEquals($node->prototype('float'), $node->floatPrototype());
+ }
+
+ public function testPrototypeArray()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $this->assertEquals($node->prototype('array'), $node->arrayPrototype());
+ }
+
+ public function testPrototypeEnum()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $this->assertEquals($node->prototype('enum'), $node->enumPrototype());
+ }
+
public function getEnableableNodeFixtures()
{
return array(
);
}
+ public function testRequiresAtLeastOneElement()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $node
+ ->requiresAtLeastOneElement()
+ ->integerPrototype();
+
+ $node->getNode()->finalize(array(1));
+
+ $this->addToAssertionCount(1);
+ }
+
+ /**
+ * @group legacy
+ * @expectedDeprecation Using Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition::cannotBeEmpty() at path "root" has no effect, consider requiresAtLeastOneElement() instead. In 4.0 both methods will behave the same.
+ */
+ public function testCannotBeEmpty()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $node
+ ->cannotBeEmpty()
+ ->integerPrototype();
+
+ $node->getNode()->finalize(array());
+ }
+
+ public function testSetDeprecated()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $node
+ ->children()
+ ->arrayNode('foo')->setDeprecated('The "%path%" node is deprecated.')->end()
+ ->end()
+ ;
+ $deprecatedNode = $node->getNode()->getChildren()['foo'];
+
+ $this->assertTrue($deprecatedNode->isDeprecated());
+ $this->assertSame('The "root.foo" node is deprecated.', $deprecatedNode->getDeprecationMessage($deprecatedNode->getName(), $deprecatedNode->getPath()));
+ }
+
+ /**
+ * @group legacy
+ * @expectedDeprecation ->cannotBeEmpty() is not applicable to concrete nodes at path "root". In 4.0 it will throw an exception.
+ */
+ public function testCannotBeEmptyOnConcreteNode()
+ {
+ $node = new ArrayNodeDefinition('root');
+ $node->cannotBeEmpty();
+
+ $node->getNode()->finalize(array());
+ }
+
protected function getField($object, $field)
{
$reflection = new \ReflectionProperty($object, $field);