[ 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\ProxyGenerator; 20 21 use PHPUnit_Framework_TestCase; 22 use ProxyManager\Generator\ClassGenerator; 23 use ProxyManager\Generator\Util\UniqueIdentifierGenerator; 24 use ProxyManager\GeneratorStrategy\EvaluatingGeneratorStrategy; 25 use ReflectionClass; 26 27 /** 28 * Base test for proxy generators 29 * 30 * @author Marco Pivetta <ocramius@gmail.com> 31 * @license MIT 32 * 33 * @group Coverage 34 */ 35 abstract class AbstractProxyGeneratorTest extends PHPUnit_Framework_TestCase 36 { 37 /** 38 * @dataProvider getTestedImplementations 39 * 40 * Verifies that generated code is valid and implements expected interfaces 41 */ 42 public function testGeneratesValidCode($className) 43 { 44 $generator = $this->getProxyGenerator(); 45 $generatedClassName = UniqueIdentifierGenerator::getIdentifier('AbstractProxyGeneratorTest'); 46 $generatedClass = new ClassGenerator($generatedClassName); 47 $originalClass = new ReflectionClass($className); 48 $generatorStrategy = new EvaluatingGeneratorStrategy(); 49 50 $generator->generate($originalClass, $generatedClass); 51 $generatorStrategy->generate($generatedClass); 52 53 $generatedReflection = new ReflectionClass($generatedClassName); 54 55 if ($originalClass->isInterface()) { 56 $this->assertTrue($generatedReflection->implementsInterface($className)); 57 } else { 58 $this->assertSame($originalClass->getName(), $generatedReflection->getParentClass()->getName()); 59 } 60 61 $this->assertSame($generatedClassName, $generatedReflection->getName()); 62 63 foreach ($this->getExpectedImplementedInterfaces() as $interface) { 64 $this->assertTrue($generatedReflection->implementsInterface($interface)); 65 } 66 } 67 68 /** 69 * Retrieve a new generator instance 70 * 71 * @return \ProxyManager\ProxyGenerator\ProxyGeneratorInterface 72 */ 73 abstract protected function getProxyGenerator(); 74 75 /** 76 * Retrieve interfaces that should be implemented by the generated code 77 * 78 * @return string[] 79 */ 80 abstract protected function getExpectedImplementedInterfaces(); 81 82 /** 83 * @return array 84 */ 85 public function getTestedImplementations() 86 { 87 return array( 88 array('ProxyManagerTestAsset\\BaseClass'), 89 array('ProxyManagerTestAsset\\ClassWithMagicMethods'), 90 array('ProxyManagerTestAsset\\ClassWithByRefMagicMethods'), 91 array('ProxyManagerTestAsset\\ClassWithMixedProperties'), 92 array('ProxyManagerTestAsset\\BaseInterface'), 93 ); 94 } 95 }
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 |