[ 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 ProxyManager\ProxyGenerator\NullObjectGenerator; 26 use ReflectionClass; 27 use ReflectionProperty; 28 29 /** 30 * Tests for {@see \ProxyManager\ProxyGenerator\NullObjectGenerator} 31 * 32 * @author Vincent Blanchon <blanchon.vincent@gmail.com> 33 * @license MIT 34 * 35 * @covers \ProxyManager\ProxyGenerator\NullObjectGenerator 36 * @group Coverage 37 */ 38 class NullObjectGeneratorTest extends PHPUnit_Framework_TestCase 39 { 40 /** 41 * @dataProvider getTestedImplementations 42 * 43 * Verifies that generated code is valid and implements expected interfaces 44 */ 45 public function testGeneratesValidCode($className) 46 { 47 $generator = $this->getProxyGenerator(); 48 $generatedClassName = UniqueIdentifierGenerator::getIdentifier('AbstractProxyGeneratorTest'); 49 $generatedClass = new ClassGenerator($generatedClassName); 50 $originalClass = new ReflectionClass($className); 51 $generatorStrategy = new EvaluatingGeneratorStrategy(); 52 53 $generator->generate($originalClass, $generatedClass); 54 $generatorStrategy->generate($generatedClass); 55 56 $generatedReflection = new ReflectionClass($generatedClassName); 57 58 if ($originalClass->isInterface()) { 59 $this->assertTrue($generatedReflection->implementsInterface($className)); 60 } 61 62 $this->assertSame($generatedClassName, $generatedReflection->getName()); 63 64 foreach ($this->getExpectedImplementedInterfaces() as $interface) { 65 $this->assertTrue($generatedReflection->implementsInterface($interface)); 66 } 67 68 $proxyGenerated = new $generatedClassName(); 69 70 foreach ($generatedReflection->getProperties(ReflectionProperty::IS_PUBLIC) as $property) { 71 $this->assertNull($proxyGenerated->$property); 72 } 73 74 /** @var \ReflectionMethod $method */ 75 foreach ($generatedReflection->getMethods(ReflectionProperty::IS_PUBLIC) as $method) { 76 if ($method->getNumberOfParameters() == 0) { 77 $this->assertNull(call_user_func(array($proxyGenerated, $method->getName()))); 78 } 79 } 80 } 81 82 /** 83 * {@inheritDoc} 84 */ 85 protected function getProxyGenerator() 86 { 87 return new NullObjectGenerator(); 88 } 89 90 /** 91 * {@inheritDoc} 92 */ 93 protected function getExpectedImplementedInterfaces() 94 { 95 return array( 96 'ProxyManager\\Proxy\\NullObjectInterface', 97 ); 98 } 99 100 /** 101 * @return array 102 */ 103 public function getTestedImplementations() 104 { 105 return array( 106 array('ProxyManagerTestAsset\\BaseClass'), 107 array('ProxyManagerTestAsset\\ClassWithMagicMethods'), 108 array('ProxyManagerTestAsset\\ClassWithByRefMagicMethods'), 109 array('ProxyManagerTestAsset\\ClassWithMixedProperties'), 110 array('ProxyManagerTestAsset\\BaseInterface'), 111 ); 112 } 113 }
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 |