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 |
RemoteObjectGeneratorTest.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\ProxyGenerator;
020
021 use PHPUnit_Framework_TestCase;
022 use ProxyManager\Generator\ClassGenerator;
023 use ProxyManager\Generator\Util\UniqueIdentifierGenerator;
024 use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy;
025 use ProxyManager\ProxyGenerator\RemoteObjectGenerator;
026 use ReflectionClass;
027
028 /**
029 * Tests for {@see \ProxyManager\ProxyGenerator\RemoteObjectGenerator}
030 *
031 * @author Vincent Blanchon <blanchon.vincent@gmail.com>
032 * @license MIT
033 *
034 * @covers \ProxyManager\ProxyGenerator\RemoteObjectGenerator
035 * @group Coverage
036 */
037 class RemoteObjectGeneratorTest extends PHPUnit_Framework_TestCase
038 {
039 /**
040 * @dataProvider getTestedImplementations
041 *
042 * Verifies that generated code is valid and implements expected interfaces
043 */
044 public function testGeneratesValidCode($className)
045 {
046 $generator = $this->getProxyGenerator();
047 $generatedClassName = UniqueIdentifierGenerator::getIdentifier('AbstractProxyGeneratorTest');
048 $generatedClass = new ClassGenerator($generatedClassName);
049 $originalClass = new ReflectionClass($className);
050 $generatorStrategy = new EvaluatingGeneratorStrategy();
051
052 $generator->generate($originalClass, $generatedClass);
053 $generatorStrategy->generate($generatedClass);
054
055 $generatedReflection = new ReflectionClass($generatedClassName);
056
057 if ($originalClass->isInterface()) {
058 $this->assertTrue($generatedReflection->implementsInterface($className));
059 } else {
060 $this->assertEmpty(
061 array_diff($originalClass->getInterfaceNames(), $generatedReflection->getInterfaceNames())
062 );
063 }
064
065 $this->assertSame($generatedClassName, $generatedReflection->getName());
066
067 foreach ($this->getExpectedImplementedInterfaces() as $interface) {
068 $this->assertTrue($generatedReflection->implementsInterface($interface));
069 }
070 }
071
072 /**
073 * {@inheritDoc}
074 */
075 protected function getProxyGenerator()
076 {
077 return new RemoteObjectGenerator();
078 }
079
080 /**
081 * {@inheritDoc}
082 */
083 protected function getExpectedImplementedInterfaces()
084 {
085 return array(
086 'ProxyManager\\Proxy\\RemoteObjectInterface',
087 );
088 }
089
090 /**
091 * @return array
092 */
093 public function getTestedImplementations()
094 {
095 return array(
096 array('ProxyManagerTestAsset\\BaseClass'),
097 array('ProxyManagerTestAsset\\ClassWithMagicMethods'),
098 array('ProxyManagerTestAsset\\ClassWithByRefMagicMethods'),
099 array('ProxyManagerTestAsset\\ClassWithMixedProperties'),
100 array('ProxyManagerTestAsset\\BaseInterface'),
101 );
102 }
103 }
104