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']); }