1<?php declare(strict_types=1); 2 3namespace PhpParser\Node\Stmt; 4 5use PhpParser\Modifiers; 6 7class PropertyTest extends \PHPUnit\Framework\TestCase { 8 /** 9 * @dataProvider provideModifiers 10 */ 11 public function testModifiers($modifier): void { 12 $node = new Property( 13 constant(Modifiers::class . '::' . strtoupper($modifier)), 14 [] // invalid 15 ); 16 17 $this->assertTrue($node->{'is' . $modifier}()); 18 } 19 20 public function testNoModifiers(): void { 21 $node = new Property(0, []); 22 23 $this->assertTrue($node->isPublic()); 24 $this->assertFalse($node->isProtected()); 25 $this->assertFalse($node->isPrivate()); 26 $this->assertFalse($node->isStatic()); 27 $this->assertFalse($node->isReadonly()); 28 $this->assertFalse($node->isPublicSet()); 29 $this->assertFalse($node->isProtectedSet()); 30 $this->assertFalse($node->isPrivateSet()); 31 } 32 33 public function testStaticImplicitlyPublic(): void { 34 $node = new Property(Modifiers::STATIC, []); 35 $this->assertTrue($node->isPublic()); 36 $this->assertFalse($node->isProtected()); 37 $this->assertFalse($node->isPrivate()); 38 $this->assertTrue($node->isStatic()); 39 $this->assertFalse($node->isReadonly()); 40 } 41 42 public static function provideModifiers() { 43 return [ 44 ['public'], 45 ['protected'], 46 ['private'], 47 ['static'], 48 ['readonly'], 49 ]; 50 } 51 52 public function testSetVisibility() { 53 $node = new Property(Modifiers::PRIVATE_SET, []); 54 $this->assertTrue($node->isPrivateSet()); 55 $node = new Property(Modifiers::PROTECTED_SET, []); 56 $this->assertTrue($node->isProtectedSet()); 57 $node = new Property(Modifiers::PUBLIC_SET, []); 58 $this->assertTrue($node->isPublicSet()); 59 } 60 61 public function testIsFinal() { 62 $node = new Property(Modifiers::FINAL, []); 63 $this->assertTrue($node->isFinal()); 64 } 65 66 public function testIsAbstract() { 67 $node = new Property(Modifiers::ABSTRACT, []); 68 $this->assertTrue($node->isAbstract()); 69 } 70} 71