Example #1
0
 public function testAddProperty()
 {
     $loader = Item::getLoader();
     $loaderReflection = new \ReflectionClass($loader);
     $classesReflection = $loaderReflection->getProperty('_classes');
     $classesReflection->setAccessible(true);
     $_classes = $classesReflection->getValue($loader);
     $this->assertFalse(isset($_classes['\\Test\\Item']['properties']['field']['getters']));
     $this->assertFalse(isset($_classes['\\Test\\Item']['properties']['field']['setters']));
     Item::addProperty('field', function () {
     }, function () {
     });
     $_classes = $classesReflection->getValue($loader);
     $this->assertTrue(isset($_classes['\\Test\\Item']['properties']['field']['getters']));
     $this->assertTrue(isset($_classes['\\Test\\Item']['properties']['field']['setters']));
     $this->assertCount(1, $_classes['\\Test\\Item']['properties']['field']['getters']);
     $this->assertCount(1, $_classes['\\Test\\Item']['properties']['field']['setters']);
     Item::addProperty('field', function () {
     }, function () {
     });
     $_classes = $classesReflection->getValue($loader);
     $this->assertCount(2, $_classes['\\Test\\Item']['properties']['field']['getters']);
     $this->assertCount(2, $_classes['\\Test\\Item']['properties']['field']['setters']);
     $this->assertFalse(isset($_classes['\\Test\\SubItem']['properties']['field']['getters']));
     $this->assertFalse(isset($_classes['\\Test\\SubItem']['properties']['field']['setters']));
     SubItem::addProperty('field', function () {
     }, function () {
     });
     $_classes = $classesReflection->getValue($loader);
     $this->assertTrue(isset($_classes['\\Test\\SubItem']['properties']['field']['getters']));
     $this->assertTrue(isset($_classes['\\Test\\SubItem']['properties']['field']['setters']));
     $this->assertCount(1, $_classes['\\Test\\SubItem']['properties']['field']['getters']);
     $this->assertCount(1, $_classes['\\Test\\SubItem']['properties']['field']['setters']);
 }