[ Index ] |
PHP Cross Reference of phpBB-3.2.11-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 4 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 5 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 6 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 7 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 8 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 9 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 10 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 11 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 12 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 13 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 * 15 * This software consists of voluntary contributions made by many individuals 16 * and is licensed under the MIT license. 17 */ 18 19 namespace ProxyManagerTest\Inflector; 20 21 use PHPUnit_Framework_TestCase; 22 use ProxyManager\Inflector\ClassNameInflector; 23 use ProxyManager\Inflector\ClassNameInflectorInterface; 24 25 /** 26 * Tests for {@see \ProxyManager\Inflector\ClassNameInflector} 27 * 28 * @author Marco Pivetta <ocramius@gmail.com> 29 * @license MIT 30 * 31 * @group Coverage 32 */ 33 class ClassNameInflectorTest extends PHPUnit_Framework_TestCase 34 { 35 /** 36 * @dataProvider getClassNames 37 * 38 * @covers \ProxyManager\Inflector\ClassNameInflector::__construct 39 * @covers \ProxyManager\Inflector\ClassNameInflector::getUserClassName 40 * @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName 41 * @covers \ProxyManager\Inflector\ClassNameInflector::isProxyClassName 42 */ 43 public function testInflector($realClassName, $proxyClassName) 44 { 45 $inflector = new ClassNameInflector('ProxyNS'); 46 47 $this->assertFalse($inflector->isProxyClassName($realClassName)); 48 $this->assertTrue($inflector->isProxyClassName($proxyClassName)); 49 $this->assertStringMatchesFormat($realClassName, $inflector->getUserClassName($realClassName)); 50 $this->assertStringMatchesFormat($proxyClassName, $inflector->getProxyClassName($proxyClassName)); 51 $this->assertStringMatchesFormat($proxyClassName, $inflector->getProxyClassName($realClassName)); 52 $this->assertStringMatchesFormat($realClassName, $inflector->getUserClassName($proxyClassName)); 53 } 54 55 /** 56 * @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName 57 */ 58 public function testGeneratesSameClassNameWithSameParameters() 59 { 60 $inflector = new ClassNameInflector('ProxyNS'); 61 62 $this->assertSame($inflector->getProxyClassName('Foo\\Bar'), $inflector->getProxyClassName('Foo\\Bar')); 63 $this->assertSame( 64 $inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab')), 65 $inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab')) 66 ); 67 $this->assertSame( 68 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz')), 69 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz')) 70 ); 71 } 72 73 /** 74 * @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName 75 */ 76 public function testGeneratesDifferentClassNameWithDifferentParameters() 77 { 78 $inflector = new ClassNameInflector('ProxyNS'); 79 80 $this->assertNotSame( 81 $inflector->getProxyClassName('Foo\\Bar'), 82 $inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar')) 83 ); 84 $this->assertNotSame( 85 $inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab')), 86 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz')) 87 ); 88 $this->assertNotSame( 89 $inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar', 'tab' => 'baz')), 90 $inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar')) 91 ); 92 $this->assertNotSame( 93 $inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar', 'tab' => 'baz')), 94 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz', 'foo' => 'bar')) 95 ); 96 } 97 98 /** 99 * @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName 100 */ 101 public function testGeneratesCorrectClassNameWhenGivenLeadingBackslash() 102 { 103 $inflector = new ClassNameInflector('ProxyNS'); 104 105 $this->assertSame( 106 $inflector->getProxyClassName('\\Foo\\Bar', array('tab' => 'baz')), 107 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz')) 108 ); 109 } 110 111 /** 112 * @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName 113 * 114 * @dataProvider getClassAndParametersCombinations 115 * 116 * @param string $className 117 * @param array $parameters 118 */ 119 public function testClassNameIsValidClassIdentifier($className, array $parameters) 120 { 121 $inflector = new ClassNameInflector('ProxyNS'); 122 123 $this->assertRegExp( 124 '/([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+)(\\\\[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]+)*/', 125 $inflector->getProxyClassName($className, $parameters), 126 'Class name string is a valid class identifier' 127 ); 128 } 129 130 /** 131 * Data provider. 132 * 133 * @return array[] 134 */ 135 public function getClassNames() 136 { 137 return array( 138 array('Foo', 'ProxyNS\\' . ClassNameInflectorInterface::PROXY_MARKER . '\\Foo\\%s'), 139 array('Foo\\Bar', 'ProxyNS\\' . ClassNameInflectorInterface::PROXY_MARKER . '\\Foo\\Bar\\%s'), 140 ); 141 } 142 143 /** 144 * Data provider. 145 * 146 * @return array[] 147 */ 148 public function getClassAndParametersCombinations() 149 { 150 return array( 151 array('Foo', array()), 152 array('Foo\\Bar', array()), 153 array('Foo', array(null)), 154 array('Foo\\Bar', array(null)), 155 array('Foo', array('foo' => 'bar')), 156 array('Foo\\Bar', array('foo' => 'bar')), 157 array('Foo', array("\0" => "very \0 bad")), 158 array('Foo\\Bar', array("\0" => "very \0 bad")), 159 ); 160 } 161 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Nov 11 20:33:01 2020 | Cross-referenced by PHPXref 0.7.1 |