Chris@0
|
1 <?php
|
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@0
|
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@0
|
19 $prop = new Stmt\Property(Stmt\Class_::MODIFIER_PUBLIC, array(
|
Chris@0
|
20 new Stmt\PropertyProperty('test')
|
Chris@0
|
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 /**
|
Chris@0
|
40 * @expectedException \LogicException
|
Chris@0
|
41 * @expectedExceptionMessage Unexpected node of type "Stmt_Echo"
|
Chris@0
|
42 */
|
Chris@0
|
43 public function testInvalidStmtError() {
|
Chris@0
|
44 $this->createTraitBuilder('Test')
|
Chris@0
|
45 ->addStmt(new Stmt\Echo_(array()))
|
Chris@0
|
46 ;
|
Chris@0
|
47 }
|
Chris@0
|
48 }
|