Вход Регистрация
Файл: gapps/vendor/nikic/php-parser/test/PhpParser/Builder/PropertyTest.php
Строк: 80
<?php

namespace PhpParserBuilder;

use 
PhpParserNodeName;
use 
PhpParserNodeStmt;
use 
PhpParserNodeExpr;
use 
PhpParserNodeScalar;
use 
PhpParserComment;

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 
StmtProperty(
                
StmtClass_::MODIFIER_PRIVATE
              
StmtClass_::MODIFIER_STATIC,
                array(
                    new 
StmtPropertyProperty('test')
                )
            ),
            
$node
        
);

        
$node $this->createPropertyBuilder('test')
            ->
makeProtected()
            ->
getNode()
        ;

        
$this->assertEquals(
            new 
StmtProperty(
                
StmtClass_::MODIFIER_PROTECTED,
                array(
                    new 
StmtPropertyProperty('test')
                )
            ),
            
$node
        
);

        
$node $this->createPropertyBuilder('test')
            ->
makePublic()
            ->
getNode()
        ;

        
$this->assertEquals(
            new 
StmtProperty(
                
StmtClass_::MODIFIER_PUBLIC,
                array(
                    new 
StmtPropertyProperty('test')
                )
            ),
            
$node
        
);
    }

    public function 
testDocComment() {
        
$node $this->createPropertyBuilder('test')
            ->
setDocComment('/** Test */')
            ->
getNode();

        
$this->assertEquals(new StmtProperty(
            
StmtClass_::MODIFIER_PUBLIC,
            array(
                new 
StmtPropertyProperty('test')
            ),
            array(
                
'comments' => array(new CommentDoc('/** 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 
ExprConstFetch(new Name('null'))
            ),
            array(
                
true,
                new 
ExprConstFetch(new Name('true'))
            ),
            array(
                
false,
                new 
ExprConstFetch(new Name('false'))
            ),
            array(
                
31415,
                new 
ScalarLNumber(31415)
            ),
            array(
                
3.1415,
                new 
ScalarDNumber(3.1415)
            ),
            array(
                
'Hallo World',
                new 
ScalarString_('Hallo World')
            ),
            array(
                array(
123),
                new 
ExprArray_(array(
                    new 
ExprArrayItem(new ScalarLNumber(1)),
                    new 
ExprArrayItem(new ScalarLNumber(2)),
                    new 
ExprArrayItem(new ScalarLNumber(3)),
                ))
            ),
            array(
                array(
'foo' => 'bar''bar' => 'foo'),
                new 
ExprArray_(array(
                    new 
ExprArrayItem(
                        new 
ScalarString_('bar'),
                        new 
ScalarString_('foo')
                    ),
                    new 
ExprArrayItem(
                        new 
ScalarString_('foo'),
                        new 
ScalarString_('bar')
                    ),
                ))
            ),
            array(
                new 
ScalarMagicConstDir,
                new 
ScalarMagicConstDir
            
)
        );
    }
}
Онлайн: 0
Реклама