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