[ Index ]

PHP Cross Reference of phpBB-3.2.11-deutsch

title

Body

[close]

/vendor/ocramius/proxy-manager/tests/ProxyManagerTest/ProxyGenerator/ -> NullObjectGeneratorTest.php (source)

   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  }


Generated: Wed Nov 11 20:33:01 2020 Cross-referenced by PHPXref 0.7.1