forked from GNUsocial/gnu-social
		
	
		
			
				
	
	
		
			148 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace PhpParser\Builder;
 | 
						|
 | 
						|
use PhpParser\Node\Name;
 | 
						|
use PhpParser\Node\Stmt;
 | 
						|
use PhpParser\Node\Expr;
 | 
						|
use PhpParser\Node\Scalar;
 | 
						|
use PhpParser\Comment;
 | 
						|
 | 
						|
class PropertyTest extends \PHPUnit_Framework_TestCase
 | 
						|
{
 | 
						|
    public function createPropertyBuilder($name) {
 | 
						|
        return new Property($name);
 | 
						|
    }
 | 
						|
 | 
						|
    public function testModifiers() {
 | 
						|
        $node = $this->createPropertyBuilder('test')
 | 
						|
            ->makePrivate()
 | 
						|
            ->makeStatic()
 | 
						|
            ->getNode()
 | 
						|
        ;
 | 
						|
 | 
						|
        $this->assertEquals(
 | 
						|
            new Stmt\Property(
 | 
						|
                Stmt\Class_::MODIFIER_PRIVATE
 | 
						|
              | Stmt\Class_::MODIFIER_STATIC,
 | 
						|
                array(
 | 
						|
                    new Stmt\PropertyProperty('test')
 | 
						|
                )
 | 
						|
            ),
 | 
						|
            $node
 | 
						|
        );
 | 
						|
 | 
						|
        $node = $this->createPropertyBuilder('test')
 | 
						|
            ->makeProtected()
 | 
						|
            ->getNode()
 | 
						|
        ;
 | 
						|
 | 
						|
        $this->assertEquals(
 | 
						|
            new Stmt\Property(
 | 
						|
                Stmt\Class_::MODIFIER_PROTECTED,
 | 
						|
                array(
 | 
						|
                    new Stmt\PropertyProperty('test')
 | 
						|
                )
 | 
						|
            ),
 | 
						|
            $node
 | 
						|
        );
 | 
						|
 | 
						|
        $node = $this->createPropertyBuilder('test')
 | 
						|
            ->makePublic()
 | 
						|
            ->getNode()
 | 
						|
        ;
 | 
						|
 | 
						|
        $this->assertEquals(
 | 
						|
            new Stmt\Property(
 | 
						|
                Stmt\Class_::MODIFIER_PUBLIC,
 | 
						|
                array(
 | 
						|
                    new Stmt\PropertyProperty('test')
 | 
						|
                )
 | 
						|
            ),
 | 
						|
            $node
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function testDocComment() {
 | 
						|
        $node = $this->createPropertyBuilder('test')
 | 
						|
            ->setDocComment('/** Test */')
 | 
						|
            ->getNode();
 | 
						|
 | 
						|
        $this->assertEquals(new Stmt\Property(
 | 
						|
            Stmt\Class_::MODIFIER_PUBLIC,
 | 
						|
            array(
 | 
						|
                new Stmt\PropertyProperty('test')
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                'comments' => array(new Comment\Doc('/** Test */'))
 | 
						|
            )
 | 
						|
        ), $node);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @dataProvider provideTestDefaultValues
 | 
						|
     */
 | 
						|
    public function testDefaultValues($value, $expectedValueNode) {
 | 
						|
        $node = $this->createPropertyBuilder('test')
 | 
						|
            ->setDefault($value)
 | 
						|
            ->getNode()
 | 
						|
        ;
 | 
						|
 | 
						|
        $this->assertEquals($expectedValueNode, $node->props[0]->default);
 | 
						|
    }
 | 
						|
 | 
						|
    public function provideTestDefaultValues() {
 | 
						|
        return array(
 | 
						|
            array(
 | 
						|
                null,
 | 
						|
                new Expr\ConstFetch(new Name('null'))
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                true,
 | 
						|
                new Expr\ConstFetch(new Name('true'))
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                false,
 | 
						|
                new Expr\ConstFetch(new Name('false'))
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                31415,
 | 
						|
                new Scalar\LNumber(31415)
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                3.1415,
 | 
						|
                new Scalar\DNumber(3.1415)
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                'Hallo World',
 | 
						|
                new Scalar\String_('Hallo World')
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                array(1, 2, 3),
 | 
						|
                new Expr\Array_(array(
 | 
						|
                    new Expr\ArrayItem(new Scalar\LNumber(1)),
 | 
						|
                    new Expr\ArrayItem(new Scalar\LNumber(2)),
 | 
						|
                    new Expr\ArrayItem(new Scalar\LNumber(3)),
 | 
						|
                ))
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                array('foo' => 'bar', 'bar' => 'foo'),
 | 
						|
                new Expr\Array_(array(
 | 
						|
                    new Expr\ArrayItem(
 | 
						|
                        new Scalar\String_('bar'),
 | 
						|
                        new Scalar\String_('foo')
 | 
						|
                    ),
 | 
						|
                    new Expr\ArrayItem(
 | 
						|
                        new Scalar\String_('foo'),
 | 
						|
                        new Scalar\String_('bar')
 | 
						|
                    ),
 | 
						|
                ))
 | 
						|
            ),
 | 
						|
            array(
 | 
						|
                new Scalar\MagicConst\Dir,
 | 
						|
                new Scalar\MagicConst\Dir
 | 
						|
            )
 | 
						|
        );
 | 
						|
    }
 | 
						|
}
 |