public function testCompound()
 {
     $x = new ResourceClasses\X(100);
     $d = new ResourceClasses\MethodOverridedDecoratorForX(array('getA' => function () {
         return parent::getA() + 1;
     }), $x);
     $this->assertEquals(100, $x->getA());
     $this->assertEquals(101, $d->getA());
 }
 public function testCompositeShouldReturnFirstNonNullValueFromFalsyValues()
 {
     $x1 = new ResourceClasses\X();
     $x1->setA(false);
     $x1->setB(null);
     $x2 = new ResourceClasses\X();
     $x2->setA(null);
     $x2->setB(0);
     $composite = new ResourceClasses\CompositeX(array($x1, $x2));
     $this->assertEquals(false, $composite->getA());
     $this->assertEquals(0, $composite->getB());
 }
 /**
  * @dataProvider withProvider
  * @_testWith ('ClassGenerator\tests\ResourceClasses\ExposeTraitTester', true)
  *           ('ClassGenerator\tests\ResourceClasses\CExposeTraitTester\BaseTester', true)
  *           ('ClassGenerator\tests\ResourceClasses\CExposeTraitTester\MethodTemplateName', true)
  *           ('ClassGenerator\tests\ResourceClasses\ExposeTraitInterfaceTester', false)
  *           ('ClassGenerator\tests\ResourceClasses\CExposeTraitTester\InterfaceTester', false)
  */
 public function testBaseClass($testedClass, $haveDummyMethod)
 {
     $exposedObject = new ResourceClasses\X(101, 102);
     $tested = new $testedClass($exposedObject);
     $this->assertEquals($exposedObject->getA(), $tested->getA());
     $this->assertEquals($exposedObject->getB(), $tested->getB());
     $this->assertEquals($exposedObject->getA(), $tested->getA());
     $tested->setB(201);
     $this->assertEquals(201, $tested->getB());
     $this->assertEquals(201, $exposedObject->getB());
     $this->assertEquals($haveDummyMethod, method_exists($tested, 'dummyMethod'));
 }
 public function testLazyWithNoLazyMethods()
 {
     $x = ResourceClasses\LazyX2::cgGet(new ResourceClasses\X2(1, 2));
     ResourceClasses\X::$constructorCount = 0;
     $x2 = $x->createAnotherXWithoutLazyMethods();
     $this->assertEquals(0, ResourceClasses\X::$constructorCount);
     $x3 = $x2->createAnotherXWithoutLazyMethods();
     $this->assertEquals(2, ResourceClasses\X::$constructorCount);
     $this->assertFalse($x3 instanceof \ClassGenerator\Interfaces\Lazy);
 }