public function testCanGetRawMixinsLists() { // entry conditions $mixins = MF_Obj_MixinsManager::getRawMixins(); $this->assertEquals(0, MF_Obj_MixinsManager::$mixinAutoInc); $this->assertTrue(is_array($mixins)); if (is_array($mixins)) { $this->assertEquals(0, count($mixins)); } // make the changes __mf_extend('Test_ObjExt', 'Test_Obj_ExtMixin'); // retest $mixins = MF_Obj_MixinsManager::getRawMixins(); $this->assertEquals(1, MF_Obj_MixinsManager::$mixinAutoInc); $this->assertTrue(is_array($mixins)); if (is_array($mixins)) { $this->assertEquals(1, count($mixins)); $this->assertTrue(isset($mixins['Test_ObjExt'])); } }
public function testCanCallSameMethodWhenMultipleMixinsPerClass() { $this->assertEquals('Test_ObjExt', get_class($this->fixture)); __mf_extend('Test_ObjBase', 'Test_Obj_BaseMixin'); __mf_extend('Test_ObjExt', 'Test_Obj_ExtMixin2'); // entry conditions $this->assertEquals(3, $this->fixture->mixinCount); // change state $result = $this->fixture->validateCalled(); // test results $this->assertEquals(array('Test_Obj_ExtMixin', 'Test_Obj_ExtMixin2', 'Test_Obj_BaseMixin'), $result); }
public function setup() { MF_Obj_MixinsManager::destroy(); $this->fixture = new Test_ObjExt(); __mf_extend('Test_ObjExt', 'Test_Obj_ExtMixin'); }
public function testCanGetDecoratorProperty() { // entry conditions $this->assertFalse(isset($this->fixture->decoratorProp)); $this->assertfalse(isset($this->fixture->name)); // change state $decorator = new Test_Obj_Decorator(); __mf_extend($this->fixture, $decorator); // retest $this->assertTrue(isset($this->fixture->decoratorProp)); $this->assertTrue(isset($this->fixture->name)); $this->assertEquals('alice', $this->fixture->decoratorProp); $this->assertEquals('lisa', $this->fixture->name); }