TreeBuilderTest.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace Symfony\Tests\Component\Config\Definition\Builder;
  3. use Symfony\Tests\Component\Config\Definition\Builder\NodeBuilder as CustomNodeBuilder;
  4. use Symfony\Component\Config\Definition\Builder\TreeBuilder;
  5. use Symfony\Component\Config\Definition\Builder\NodeBuilder;
  6. require __DIR__.'/../../Fixtures/Builder/NodeBuilder.php';
  7. require __DIR__.'/../../Fixtures/Builder/BarNodeDefinition.php';
  8. require __DIR__.'/../../Fixtures/Builder/VariableNodeDefinition.php';
  9. class TreeBuilderTest extends \PHPUnit_Framework_TestCase
  10. {
  11. public function testUsingACustomNodeBuilder()
  12. {
  13. $builder = new TreeBuilder();
  14. $root = $builder->root('custom', 'array', new CustomNodeBuilder());
  15. $nodeBuilder = $root->children();
  16. $this->assertEquals(get_class($nodeBuilder), 'Symfony\Tests\Component\Config\Definition\Builder\NodeBuilder');
  17. $nodeBuilder = $nodeBuilder->arrayNode('deeper')->children();
  18. $this->assertEquals(get_class($nodeBuilder), 'Symfony\Tests\Component\Config\Definition\Builder\NodeBuilder');
  19. }
  20. public function testOverrideABuiltInNodeType()
  21. {
  22. $builder = new TreeBuilder();
  23. $root = $builder->root('override', 'array', new CustomNodeBuilder());
  24. $definition = $root->children()->variableNode('variable');
  25. $this->assertEquals(get_class($definition), 'Symfony\Tests\Component\Config\Definition\Builder\VariableNodeDefinition');
  26. }
  27. public function testAddANodeType()
  28. {
  29. $builder = new TreeBuilder();
  30. $root = $builder->root('override', 'array', new CustomNodeBuilder());
  31. $definition = $root->children()->barNode('variable');
  32. $this->assertEquals(get_class($definition), 'Symfony\Tests\Component\Config\Definition\Builder\BarNodeDefinition');
  33. }
  34. public function testCreateABuiltInNodeTypeWithACustomNodeBuilder()
  35. {
  36. $builder = new TreeBuilder();
  37. $root = $builder->root('builtin', 'array', new CustomNodeBuilder());
  38. $definition = $root->children()->booleanNode('boolean');
  39. $this->assertEquals(get_class($definition), 'Symfony\Component\Config\Definition\Builder\BooleanNodeDefinition');
  40. }
  41. public function testPrototypedArrayNodeUseTheCustomNodeBuilder()
  42. {
  43. $builder = new TreeBuilder();
  44. $root = $builder->root('override', 'array', new CustomNodeBuilder());
  45. $root->prototype('bar')->end();
  46. }
  47. public function testAnExtendedNodeBuilderGetsPropagatedToTheChildren()
  48. {
  49. $builder = new TreeBuilder();
  50. $builder->root('propagation')
  51. ->children()
  52. ->setNodeClass('extended', 'Symfony\Tests\Component\Config\Definition\Builder\VariableNodeDefinition')
  53. ->node('foo', 'extended')->end()
  54. ->arrayNode('child')
  55. ->children()
  56. ->node('foo', 'extended')
  57. ->end()
  58. ->end()
  59. ->end()
  60. ->end();
  61. }
  62. }