Вход Регистрация
Файл: src/vendor/nikic/php-parser/test/PhpParser/Node/NameTest.php
Строк: 190
<?php

namespace PhpParserNode;

class 
NameTest extends PHPUnit_Framework_TestCase
{
    public function 
testConstruct() {
        
$name = new Name(array('foo', 'bar'));
        
$this->assertSame(array('foo', 'bar'), $name->parts);

        
$name = new Name('foobar');
        
$this->assertSame(array('foo', 'bar'), $name->parts);
    }

    public function 
testGet() {
        
$name = new Name('foo');
        
$this->assertSame('foo', $name->getFirst());
        
$this->assertSame('foo', $name->getLast());

        
$name = new Name('foobar');
        
$this->assertSame('foo', $name->getFirst());
        
$this->assertSame('bar', $name->getLast());
    }

    public function 
testToString() {
        
$name = new Name('foobar');

        
$this->assertSame('foobar', (string) $name);
        
$this->assertSame('foobar', $name->toString());
        
$this->assertSame('foo_bar', $name->toString('_'));
    }

    public function 
testSet() {
        
$name = new Name('foo');

        
$name->set('foobar');
        
$this->assertSame('foobar', $name->toString());

        
$name->set(array('foo', 'bar'));
        
$this->assertSame('foobar', $name->toString());

        
$name->set(new Name('foobar'));
        
$this->assertSame('foobar', $name->toString());
    }

    public function 
testSetFirst() {
        
$name = new Name('foo');

        
$name->setFirst('bar');
        
$this->assertSame('bar', $name->toString());

        
$name->setFirst('AB');
        
$this->assertSame('AB', $name->toString());

        
$name->setFirst('C');
        
$this->assertSame('CB', $name->toString());

        
$name->setFirst('DE');
        
$this->assertSame('DEB', $name->toString());
    }

    public function 
testSetLast() {
        
$name = new Name('foo');

        
$name->setLast('bar');
        
$this->assertSame('bar', $name->toString());

        
$name->setLast('AB');
        
$this->assertSame('AB', $name->toString());

        
$name->setLast('C');
        
$this->assertSame('AC', $name->toString());

        
$name->setLast('DE');
        
$this->assertSame('ADE', $name->toString());
    }

    public function 
testAppend() {
        
$name = new Name('foo');

        
$name->append('bar');
        
$this->assertSame('foobar', $name->toString());

        
$name->append('barfoo');
        
$this->assertSame('foobarbarfoo', $name->toString());
    }

    public function 
testPrepend() {
        
$name = new Name('foo');

        
$name->prepend('bar');
        
$this->assertSame('barfoo', $name->toString());

        
$name->prepend('foobar');
        
$this->assertSame('foobarbarfoo', $name->toString());
    }

    public function 
testSlice() {
        
$name = new Name('foobar');
        
$this->assertEquals(new Name('foobar'), $name->slice(0));
        
$this->assertEquals(new Name('bar'), $name->slice(1));
        
$this->assertEquals(new Name([]), $name->slice(2));
    }

    
/**
     * @expectedException OutOfBoundsException
     * @expectedExceptionMessage Offset 4 is out of bounds
     */
    
public function testSliceException() {
        (new 
Name('foobarbaz'))->slice(4);
    }

    public function 
testConcat() {
        
$this->assertEquals(new Name('foobarbaz'), Name::concat('foo', 'barbaz'));
        
$this->assertEquals(
            new 
NameFullyQualified('foobar'),
            
NameFullyQualified::concat(['foo'], new Name('bar'))
        );

        
$attributes = ['foo' => 'bar'];
        
$this->assertEquals(
            new 
NameRelative('foobarbaz', $attributes),
            
NameRelative::concat(new NameFullyQualified('foobar'), 'baz', $attributes)
        );

        
$this->assertEquals(new Name('foo'), Name::concat([], 'foo'));
        
$this->assertEquals(new Name([]), Name::concat([], []));
    }

    public function 
testIs() {
        
$name = new Name('foo');
        
$this->assertTrue ($name->isUnqualified());
        
$this->assertFalse($name->isQualified());
        
$this->assertFalse($name->isFullyQualified());
        
$this->assertFalse($name->isRelative());

        
$name = new Name('foobar');
        
$this->assertFalse($name->isUnqualified());
        
$this->assertTrue ($name->isQualified());
        
$this->assertFalse($name->isFullyQualified());
        
$this->assertFalse($name->isRelative());

        
$name = new NameFullyQualified('foo');
        
$this->assertFalse($name->isUnqualified());
        
$this->assertFalse($name->isQualified());
        
$this->assertTrue ($name->isFullyQualified());
        
$this->assertFalse($name->isRelative());

        
$name = new NameRelative('foo');
        
$this->assertFalse($name->isUnqualified());
        
$this->assertFalse($name->isQualified());
        
$this->assertFalse($name->isFullyQualified());
        
$this->assertTrue ($name->isRelative());
    }

    
/**
     * @expectedException        InvalidArgumentException
     * @expectedExceptionMessage When changing a name you need to pass either a string, an array or a Name node
     */
    
public function testInvalidArg() {
        
$name = new Name('foo');
        
$name->set(new stdClass);
    }
}
Онлайн: 2
Реклама