assertTrue($node->{'is' . $modifier}()); } public function testNoModifiers(): void { $node = new Property(0, []); $this->assertTrue($node->isPublic()); $this->assertFalse($node->isProtected()); $this->assertFalse($node->isPrivate()); $this->assertFalse($node->isStatic()); $this->assertFalse($node->isReadonly()); $this->assertFalse($node->isPublicSet()); $this->assertFalse($node->isProtectedSet()); $this->assertFalse($node->isPrivateSet()); } public function testStaticImplicitlyPublic(): void { $node = new Property(Modifiers::STATIC, []); $this->assertTrue($node->isPublic()); $this->assertFalse($node->isProtected()); $this->assertFalse($node->isPrivate()); $this->assertTrue($node->isStatic()); $this->assertFalse($node->isReadonly()); } public static function provideModifiers() { return [ ['public'], ['protected'], ['private'], ['static'], ['readonly'], ]; } public function testSetVisibility() { $node = new Property(Modifiers::PRIVATE_SET, []); $this->assertTrue($node->isPrivateSet()); $node = new Property(Modifiers::PROTECTED_SET, []); $this->assertTrue($node->isProtectedSet()); $node = new Property(Modifiers::PUBLIC_SET, []); $this->assertTrue($node->isPublicSet()); } }