annotate vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@13 1 <?php declare(strict_types=1);
Chris@0 2
Chris@0 3 namespace PhpParser\Node\Stmt;
Chris@0 4
Chris@13 5 use PhpParser\Node\Expr\Variable;
Chris@13 6 use PhpParser\Node\Name;
Chris@13 7 use PhpParser\Node\Param;
Chris@13 8
Chris@17 9 class ClassMethodTest extends \PHPUnit\Framework\TestCase
Chris@0 10 {
Chris@0 11 /**
Chris@0 12 * @dataProvider provideModifiers
Chris@0 13 */
Chris@0 14 public function testModifiers($modifier) {
Chris@13 15 $node = new ClassMethod('foo', [
Chris@0 16 'type' => constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier))
Chris@13 17 ]);
Chris@0 18
Chris@0 19 $this->assertTrue($node->{'is' . $modifier}());
Chris@0 20 }
Chris@0 21
Chris@0 22 public function testNoModifiers() {
Chris@13 23 $node = new ClassMethod('foo', ['type' => 0]);
Chris@0 24
Chris@0 25 $this->assertTrue($node->isPublic());
Chris@0 26 $this->assertFalse($node->isProtected());
Chris@0 27 $this->assertFalse($node->isPrivate());
Chris@0 28 $this->assertFalse($node->isAbstract());
Chris@0 29 $this->assertFalse($node->isFinal());
Chris@0 30 $this->assertFalse($node->isStatic());
Chris@13 31 $this->assertFalse($node->isMagic());
Chris@0 32 }
Chris@0 33
Chris@0 34 public function provideModifiers() {
Chris@13 35 return [
Chris@13 36 ['public'],
Chris@13 37 ['protected'],
Chris@13 38 ['private'],
Chris@13 39 ['abstract'],
Chris@13 40 ['final'],
Chris@13 41 ['static'],
Chris@13 42 ];
Chris@0 43 }
Chris@0 44
Chris@0 45 /**
Chris@0 46 * Checks that implicit public modifier detection for method is working
Chris@0 47 *
Chris@0 48 * @dataProvider implicitPublicModifiers
Chris@0 49 *
Chris@13 50 * @param string $modifier Node type modifier
Chris@0 51 */
Chris@13 52 public function testImplicitPublic(string $modifier)
Chris@0 53 {
Chris@13 54 $node = new ClassMethod('foo', [
Chris@0 55 'type' => constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier))
Chris@13 56 ]);
Chris@0 57
Chris@0 58 $this->assertTrue($node->isPublic(), 'Node should be implicitly public');
Chris@0 59 }
Chris@0 60
Chris@0 61 public function implicitPublicModifiers() {
Chris@13 62 return [
Chris@13 63 ['abstract'],
Chris@13 64 ['final'],
Chris@13 65 ['static'],
Chris@13 66 ];
Chris@13 67 }
Chris@13 68
Chris@13 69 /**
Chris@13 70 * @dataProvider provideMagics
Chris@13 71 *
Chris@13 72 * @param string $name Node name
Chris@13 73 */
Chris@13 74 public function testMagic(string $name) {
Chris@13 75 $node = new ClassMethod($name);
Chris@13 76 $this->assertTrue($node->isMagic(), 'Method should be magic');
Chris@13 77 }
Chris@13 78
Chris@13 79 public function provideMagics() {
Chris@13 80 return [
Chris@13 81 ['__construct'],
Chris@13 82 ['__DESTRUCT'],
Chris@13 83 ['__caLL'],
Chris@13 84 ['__callstatic'],
Chris@13 85 ['__get'],
Chris@13 86 ['__set'],
Chris@13 87 ['__isset'],
Chris@13 88 ['__unset'],
Chris@13 89 ['__sleep'],
Chris@13 90 ['__wakeup'],
Chris@13 91 ['__tostring'],
Chris@13 92 ['__set_state'],
Chris@13 93 ['__clone'],
Chris@13 94 ['__invoke'],
Chris@13 95 ['__debuginfo'],
Chris@13 96 ];
Chris@13 97 }
Chris@13 98
Chris@13 99 public function testFunctionLike() {
Chris@13 100 $param = new Param(new Variable('a'));
Chris@13 101 $type = new Name('Foo');
Chris@13 102 $return = new Return_(new Variable('a'));
Chris@13 103 $method = new ClassMethod('test', [
Chris@13 104 'byRef' => false,
Chris@13 105 'params' => [$param],
Chris@13 106 'returnType' => $type,
Chris@13 107 'stmts' => [$return],
Chris@13 108 ]);
Chris@13 109
Chris@13 110 $this->assertFalse($method->returnsByRef());
Chris@13 111 $this->assertSame([$param], $method->getParams());
Chris@13 112 $this->assertSame($type, $method->getReturnType());
Chris@13 113 $this->assertSame([$return], $method->getStmts());
Chris@13 114
Chris@13 115 $method = new ClassMethod('test', [
Chris@13 116 'byRef' => true,
Chris@13 117 'stmts' => null,
Chris@13 118 ]);
Chris@13 119
Chris@13 120 $this->assertTrue($method->returnsByRef());
Chris@13 121 $this->assertNull($method->getStmts());
Chris@0 122 }
Chris@0 123 }