TreeBuilderTest.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /*
  3. * This file is part of the Symfony framework.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace Symfony\Tests\Component\Config\Definition\Builder;
  11. use Symfony\Tests\Component\Config\Definition\Builder\NodeBuilder as CustomNodeBuilder;
  12. use Symfony\Component\Config\Definition\Builder\TreeBuilder;
  13. use Symfony\Component\Config\Definition\Builder\NodeBuilder;
  14. require __DIR__.'/../../Fixtures/Builder/NodeBuilder.php';
  15. require __DIR__.'/../../Fixtures/Builder/BarNodeDefinition.php';
  16. require __DIR__.'/../../Fixtures/Builder/VariableNodeDefinition.php';
  17. class TreeBuilderTest extends \PHPUnit_Framework_TestCase
  18. {
  19. public function testUsingACustomNodeBuilder()
  20. {
  21. $builder = new TreeBuilder();
  22. $root = $builder->root('custom', 'array', new CustomNodeBuilder());
  23. $nodeBuilder = $root->children();
  24. $this->assertEquals(get_class($nodeBuilder), 'Symfony\Tests\Component\Config\Definition\Builder\NodeBuilder');
  25. $nodeBuilder = $nodeBuilder->arrayNode('deeper')->children();
  26. $this->assertEquals(get_class($nodeBuilder), 'Symfony\Tests\Component\Config\Definition\Builder\NodeBuilder');
  27. }
  28. public function testOverrideABuiltInNodeType()
  29. {
  30. $builder = new TreeBuilder();
  31. $root = $builder->root('override', 'array', new CustomNodeBuilder());
  32. $definition = $root->children()->variableNode('variable');
  33. $this->assertEquals(get_class($definition), 'Symfony\Tests\Component\Config\Definition\Builder\VariableNodeDefinition');
  34. }
  35. public function testAddANodeType()
  36. {
  37. $builder = new TreeBuilder();
  38. $root = $builder->root('override', 'array', new CustomNodeBuilder());
  39. $definition = $root->children()->barNode('variable');
  40. $this->assertEquals(get_class($definition), 'Symfony\Tests\Component\Config\Definition\Builder\BarNodeDefinition');
  41. }
  42. public function testCreateABuiltInNodeTypeWithACustomNodeBuilder()
  43. {
  44. $builder = new TreeBuilder();
  45. $root = $builder->root('builtin', 'array', new CustomNodeBuilder());
  46. $definition = $root->children()->booleanNode('boolean');
  47. $this->assertEquals(get_class($definition), 'Symfony\Component\Config\Definition\Builder\BooleanNodeDefinition');
  48. }
  49. public function testPrototypedArrayNodeUseTheCustomNodeBuilder()
  50. {
  51. $builder = new TreeBuilder();
  52. $root = $builder->root('override', 'array', new CustomNodeBuilder());
  53. $root->prototype('bar')->end();
  54. }
  55. public function testAnExtendedNodeBuilderGetsPropagatedToTheChildren()
  56. {
  57. $builder = new TreeBuilder();
  58. $builder->root('propagation')
  59. ->children()
  60. ->setNodeClass('extended', 'Symfony\Tests\Component\Config\Definition\Builder\VariableNodeDefinition')
  61. ->node('foo', 'extended')->end()
  62. ->arrayNode('child')
  63. ->children()
  64. ->node('foo', 'extended')
  65. ->end()
  66. ->end()
  67. ->end()
  68. ->end();
  69. }
  70. }