Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
ClassNameInflectorTest.php
001 <?php
002 /*
003 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
004 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
005 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
006 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
007 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
008 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
009 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
010 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
011 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
012 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
013 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
014 *
015 * This software consists of voluntary contributions made by many individuals
016 * and is licensed under the MIT license.
017 */
018
019 namespace ProxyManagerTest\Inflector;
020
021 use PHPUnit_Framework_TestCase;
022 use ProxyManager\Inflector\ClassNameInflector;
023 use ProxyManager\Inflector\ClassNameInflectorInterface;
024
025 /**
026 * Tests for {@see \ProxyManager\Inflector\ClassNameInflector}
027 *
028 * @author Marco Pivetta <ocramius@gmail.com>
029 * @license MIT
030 *
031 * @group Coverage
032 */
033 class ClassNameInflectorTest extends PHPUnit_Framework_TestCase
034 {
035 /**
036 * @dataProvider getClassNames
037 *
038 * @covers \ProxyManager\Inflector\ClassNameInflector::__construct
039 * @covers \ProxyManager\Inflector\ClassNameInflector::getUserClassName
040 * @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName
041 * @covers \ProxyManager\Inflector\ClassNameInflector::isProxyClassName
042 */
043 public function testInflector($realClassName, $proxyClassName)
044 {
045 $inflector = new ClassNameInflector('ProxyNS');
046
047 $this->assertFalse($inflector->isProxyClassName($realClassName));
048 $this->assertTrue($inflector->isProxyClassName($proxyClassName));
049 $this->assertStringMatchesFormat($realClassName, $inflector->getUserClassName($realClassName));
050 $this->assertStringMatchesFormat($proxyClassName, $inflector->getProxyClassName($proxyClassName));
051 $this->assertStringMatchesFormat($proxyClassName, $inflector->getProxyClassName($realClassName));
052 $this->assertStringMatchesFormat($realClassName, $inflector->getUserClassName($proxyClassName));
053 }
054
055 /**
056 * @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName
057 */
058 public function testGeneratesSameClassNameWithSameParameters()
059 {
060 $inflector = new ClassNameInflector('ProxyNS');
061
062 $this->assertSame($inflector->getProxyClassName('Foo\\Bar'), $inflector->getProxyClassName('Foo\\Bar'));
063 $this->assertSame(
064 $inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab')),
065 $inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab'))
066 );
067 $this->assertSame(
068 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz')),
069 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz'))
070 );
071 }
072
073 /**
074 * @covers \ProxyManager\Inflector\ClassNameInflector::getProxyClassName
075 */
076 public function testGeneratesDifferentClassNameWithDifferentParameters()
077 {
078 $inflector = new ClassNameInflector('ProxyNS');
079
080 $this->assertNotSame(
081 $inflector->getProxyClassName('Foo\\Bar'),
082 $inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar'))
083 );
084 $this->assertNotSame(
085 $inflector->getProxyClassName('Foo\\Bar', array('baz' => 'tab')),
086 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz'))
087 );
088 $this->assertNotSame(
089 $inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar', 'tab' => 'baz')),
090 $inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar'))
091 );
092 $this->assertNotSame(
093 $inflector->getProxyClassName('Foo\\Bar', array('foo' => 'bar', 'tab' => 'baz')),
094 $inflector->getProxyClassName('Foo\\Bar', array('tab' => 'baz', 'foo' => 'bar'))
095 );
096 }
097
098 /**
099 * @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 }
162