| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- <?php
 - 
 - namespace CG\Tests\Proxy;
 - 
 - use CG\Proxy\LazyInitializerInterface;
 - use CG\Proxy\InterceptionGenerator;
 - use CG\Proxy\LazyInitializerGenerator;
 - use CG\Proxy\Enhancer;
 - use CG\Tests\Proxy\Fixture\TraceInterceptor;
 - 
 - class EnhancerTest extends \PHPUnit_Framework_TestCase
 - {
 -     /**
 -      * @dataProvider getGenerationTests
 -      */
 -     public function testGenerateClass($class, $generatedClass, array $interfaces, array $generators)
 -     {
 -         $enhancer = new Enhancer(new \ReflectionClass($class), $interfaces, $generators);
 -         $enhancer->setNamingStrategy($this->getNamingStrategy($generatedClass));
 - 
 -         $this->assertEquals($this->getContent(substr($generatedClass, strrpos($generatedClass, '\\') + 1)), $enhancer->generateClass());
 -     }
 - 
 -     public function getGenerationTests()
 -     {
 -         return array(
 -             array('CG\Tests\Proxy\Fixture\SimpleClass', 'CG\Tests\Proxy\Fixture\SimpleClass__CG__Enhanced', array('CG\Tests\Proxy\Fixture\MarkerInterface'), array()),
 -             array('CG\Tests\Proxy\Fixture\SimpleClass', 'CG\Tests\Proxy\Fixture\SimpleClass__CG__Sluggable', array('CG\Tests\Proxy\Fixture\SluggableInterface'), array()),
 -             array('CG\Tests\Proxy\Fixture\Entity', 'CG\Tests\Proxy\Fixture\Entity__CG__LazyInitializing', array(), array(
 -                 new LazyInitializerGenerator(),
 -             ))
 -         );
 -     }
 - 
 -     public function testInterceptionGenerator()
 -     {
 -         $enhancer = new Enhancer(new \ReflectionClass('CG\Tests\Proxy\Fixture\Entity'), array(), array(
 -             $generator = new InterceptionGenerator()
 -         ));
 -         $enhancer->setNamingStrategy($this->getNamingStrategy('CG\Tests\Proxy\Fixture\Entity__CG__Traceable_'.sha1(microtime(true))));
 -         $generator->setPrefix('');
 - 
 -         $traceable = $enhancer->createInstance();
 -         $traceable->setLoader($this->getLoader(array(
 -             $interceptor1 = new TraceInterceptor(),
 -             $interceptor2 = new TraceInterceptor(),
 -         )));
 - 
 -         $this->assertEquals('foo', $traceable->getName());
 -         $this->assertEquals('foo', $traceable->getName());
 -         $this->assertEquals(2, count($interceptor1->getLog()));
 -         $this->assertEquals(2, count($interceptor2->getLog()));
 -     }
 - 
 -     public function testLazyInitializerGenerator()
 -     {
 -         $enhancer = new Enhancer(new \ReflectionClass('CG\Tests\Proxy\Fixture\Entity'), array(), array(
 -             $generator = new LazyInitializerGenerator(),
 -         ));
 -         $generator->setPrefix('');
 - 
 -         $entity = $enhancer->createInstance();
 -         $entity->setLazyInitializer($initializer = new Initializer());
 -         $this->assertEquals('foo', $entity->getName());
 -         $this->assertSame($entity, $initializer->getLastObject());
 -     }
 - 
 -     private function getLoader(array $interceptors)
 -     {
 -         $loader = $this->getMock('CG\Proxy\InterceptorLoaderInterface');
 -         $loader
 -             ->expects($this->any())
 -             ->method('loadInterceptors')
 -             ->will($this->returnValue($interceptors))
 -         ;
 - 
 -         return $loader;
 -     }
 - 
 -     private function getContent($file)
 -     {
 -         return file_get_contents(__DIR__.'/Fixture/generated/'.$file.'.php.gen');
 -     }
 - 
 -     private function getNamingStrategy($name)
 -     {
 -         $namingStrategy = $this->getMock('CG\Core\NamingStrategyInterface');
 -         $namingStrategy
 -             ->expects($this->any())
 -             ->method('getClassName')
 -             ->will($this->returnValue($name))
 -         ;
 - 
 -         return $namingStrategy;
 -     }
 - }
 - 
 - class Initializer implements LazyInitializerInterface
 - {
 -     private $lastObject;
 - 
 -     public function initializeObject($object)
 -     {
 -         $this->lastObject = $object;
 -     }
 - 
 -     public function getLastObject()
 -     {
 -         return $this->lastObject;
 -     }
 - }
 
 
  |