OptionsResolverIntrospectorTest.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien@symfony.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Component\OptionsResolver\Tests\Debug;
  11. use PHPUnit\Framework\TestCase;
  12. use Symfony\Component\OptionsResolver\Debug\OptionsResolverIntrospector;
  13. use Symfony\Component\OptionsResolver\Options;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. class OptionsResolverIntrospectorTest extends TestCase
  16. {
  17. public function testGetDefault()
  18. {
  19. $resolver = new OptionsResolver();
  20. $resolver->setDefault($option = 'foo', 'bar');
  21. $debug = new OptionsResolverIntrospector($resolver);
  22. $this->assertSame('bar', $debug->getDefault($option));
  23. }
  24. public function testGetDefaultNull()
  25. {
  26. $resolver = new OptionsResolver();
  27. $resolver->setDefault($option = 'foo', null);
  28. $debug = new OptionsResolverIntrospector($resolver);
  29. $this->assertNull($debug->getDefault($option));
  30. }
  31. public function testGetDefaultThrowsOnNoConfiguredValue()
  32. {
  33. $this->expectException('Symfony\Component\OptionsResolver\Exception\NoConfigurationException');
  34. $this->expectExceptionMessage('No default value was set for the "foo" option.');
  35. $resolver = new OptionsResolver();
  36. $resolver->setDefined($option = 'foo');
  37. $debug = new OptionsResolverIntrospector($resolver);
  38. $debug->getDefault($option);
  39. }
  40. public function testGetDefaultThrowsOnNotDefinedOption()
  41. {
  42. $this->expectException('Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException');
  43. $this->expectExceptionMessage('The option "foo" does not exist.');
  44. $resolver = new OptionsResolver();
  45. $debug = new OptionsResolverIntrospector($resolver);
  46. $debug->getDefault('foo');
  47. }
  48. public function testGetLazyClosures()
  49. {
  50. $resolver = new OptionsResolver();
  51. $closures = [];
  52. $resolver->setDefault($option = 'foo', $closures[] = function (Options $options) {});
  53. $debug = new OptionsResolverIntrospector($resolver);
  54. $this->assertSame($closures, $debug->getLazyClosures($option));
  55. }
  56. public function testGetLazyClosuresThrowsOnNoConfiguredValue()
  57. {
  58. $this->expectException('Symfony\Component\OptionsResolver\Exception\NoConfigurationException');
  59. $this->expectExceptionMessage('No lazy closures were set for the "foo" option.');
  60. $resolver = new OptionsResolver();
  61. $resolver->setDefined($option = 'foo');
  62. $debug = new OptionsResolverIntrospector($resolver);
  63. $debug->getLazyClosures($option);
  64. }
  65. public function testGetLazyClosuresThrowsOnNotDefinedOption()
  66. {
  67. $this->expectException('Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException');
  68. $this->expectExceptionMessage('The option "foo" does not exist.');
  69. $resolver = new OptionsResolver();
  70. $debug = new OptionsResolverIntrospector($resolver);
  71. $debug->getLazyClosures('foo');
  72. }
  73. public function testGetAllowedTypes()
  74. {
  75. $resolver = new OptionsResolver();
  76. $resolver->setDefined($option = 'foo');
  77. $resolver->setAllowedTypes($option = 'foo', $allowedTypes = ['string', 'bool']);
  78. $debug = new OptionsResolverIntrospector($resolver);
  79. $this->assertSame($allowedTypes, $debug->getAllowedTypes($option));
  80. }
  81. public function testGetAllowedTypesThrowsOnNoConfiguredValue()
  82. {
  83. $this->expectException('Symfony\Component\OptionsResolver\Exception\NoConfigurationException');
  84. $this->expectExceptionMessage('No allowed types were set for the "foo" option.');
  85. $resolver = new OptionsResolver();
  86. $resolver->setDefined($option = 'foo');
  87. $debug = new OptionsResolverIntrospector($resolver);
  88. $this->assertSame('bar', $debug->getAllowedTypes($option));
  89. }
  90. public function testGetAllowedTypesThrowsOnNotDefinedOption()
  91. {
  92. $this->expectException('Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException');
  93. $this->expectExceptionMessage('The option "foo" does not exist.');
  94. $resolver = new OptionsResolver();
  95. $debug = new OptionsResolverIntrospector($resolver);
  96. $this->assertSame('bar', $debug->getAllowedTypes('foo'));
  97. }
  98. public function testGetAllowedValues()
  99. {
  100. $resolver = new OptionsResolver();
  101. $resolver->setDefined($option = 'foo');
  102. $resolver->setAllowedValues($option = 'foo', $allowedValues = ['bar', 'baz']);
  103. $debug = new OptionsResolverIntrospector($resolver);
  104. $this->assertSame($allowedValues, $debug->getAllowedValues($option));
  105. }
  106. public function testGetAllowedValuesThrowsOnNoConfiguredValue()
  107. {
  108. $this->expectException('Symfony\Component\OptionsResolver\Exception\NoConfigurationException');
  109. $this->expectExceptionMessage('No allowed values were set for the "foo" option.');
  110. $resolver = new OptionsResolver();
  111. $resolver->setDefined($option = 'foo');
  112. $debug = new OptionsResolverIntrospector($resolver);
  113. $this->assertSame('bar', $debug->getAllowedValues($option));
  114. }
  115. public function testGetAllowedValuesThrowsOnNotDefinedOption()
  116. {
  117. $this->expectException('Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException');
  118. $this->expectExceptionMessage('The option "foo" does not exist.');
  119. $resolver = new OptionsResolver();
  120. $debug = new OptionsResolverIntrospector($resolver);
  121. $this->assertSame('bar', $debug->getAllowedValues('foo'));
  122. }
  123. public function testGetNormalizer()
  124. {
  125. $resolver = new OptionsResolver();
  126. $resolver->setDefined($option = 'foo');
  127. $resolver->setNormalizer($option = 'foo', $normalizer = function () {});
  128. $debug = new OptionsResolverIntrospector($resolver);
  129. $this->assertSame($normalizer, $debug->getNormalizer($option));
  130. }
  131. public function testGetNormalizerThrowsOnNoConfiguredValue()
  132. {
  133. $this->expectException('Symfony\Component\OptionsResolver\Exception\NoConfigurationException');
  134. $this->expectExceptionMessage('No normalizer was set for the "foo" option.');
  135. $resolver = new OptionsResolver();
  136. $resolver->setDefined($option = 'foo');
  137. $debug = new OptionsResolverIntrospector($resolver);
  138. $this->assertSame('bar', $debug->getNormalizer($option));
  139. }
  140. public function testGetNormalizerThrowsOnNotDefinedOption()
  141. {
  142. $this->expectException('Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException');
  143. $this->expectExceptionMessage('The option "foo" does not exist.');
  144. $resolver = new OptionsResolver();
  145. $debug = new OptionsResolverIntrospector($resolver);
  146. $this->assertSame('bar', $debug->getNormalizer('foo'));
  147. }
  148. }