Chris@13
|
1 <?php declare(strict_types=1);
|
Chris@0
|
2
|
Chris@0
|
3 namespace PhpParser\Builder;
|
Chris@0
|
4
|
Chris@0
|
5 use PhpParser\Comment;
|
Chris@0
|
6 use PhpParser\Node\Name;
|
Chris@0
|
7 use PhpParser\Node\Stmt;
|
Chris@0
|
8
|
Chris@17
|
9 class TraitTest extends \PHPUnit\Framework\TestCase
|
Chris@0
|
10 {
|
Chris@0
|
11 protected function createTraitBuilder($class) {
|
Chris@0
|
12 return new Trait_($class);
|
Chris@0
|
13 }
|
Chris@0
|
14
|
Chris@0
|
15 public function testStmtAddition() {
|
Chris@0
|
16 $method1 = new Stmt\ClassMethod('test1');
|
Chris@0
|
17 $method2 = new Stmt\ClassMethod('test2');
|
Chris@0
|
18 $method3 = new Stmt\ClassMethod('test3');
|
Chris@13
|
19 $prop = new Stmt\Property(Stmt\Class_::MODIFIER_PUBLIC, [
|
Chris@0
|
20 new Stmt\PropertyProperty('test')
|
Chris@13
|
21 ]);
|
Chris@0
|
22 $use = new Stmt\TraitUse([new Name('OtherTrait')]);
|
Chris@0
|
23 $trait = $this->createTraitBuilder('TestTrait')
|
Chris@0
|
24 ->setDocComment('/** Nice trait */')
|
Chris@0
|
25 ->addStmt($method1)
|
Chris@0
|
26 ->addStmts([$method2, $method3])
|
Chris@0
|
27 ->addStmt($prop)
|
Chris@0
|
28 ->addStmt($use)
|
Chris@0
|
29 ->getNode();
|
Chris@0
|
30 $this->assertEquals(new Stmt\Trait_('TestTrait', [
|
Chris@0
|
31 'stmts' => [$use, $prop, $method1, $method2, $method3]
|
Chris@0
|
32 ], [
|
Chris@0
|
33 'comments' => [
|
Chris@0
|
34 new Comment\Doc('/** Nice trait */')
|
Chris@0
|
35 ]
|
Chris@0
|
36 ]), $trait);
|
Chris@0
|
37 }
|
Chris@0
|
38
|
Chris@0
|
39 public function testInvalidStmtError() {
|
Chris@17
|
40 $this->expectException(\LogicException::class);
|
Chris@17
|
41 $this->expectExceptionMessage('Unexpected node of type "Stmt_Echo"');
|
Chris@0
|
42 $this->createTraitBuilder('Test')
|
Chris@13
|
43 ->addStmt(new Stmt\Echo_([]))
|
Chris@0
|
44 ;
|
Chris@0
|
45 }
|
Chris@0
|
46 }
|