Chris@0: assertSame(array('foo', 'bar'), $name->parts); Chris@0: Chris@0: $name = new Name('foo\bar'); Chris@0: $this->assertSame(array('foo', 'bar'), $name->parts); Chris@0: Chris@0: $name = new Name($name); Chris@0: $this->assertSame(array('foo', 'bar'), $name->parts); Chris@0: } Chris@0: Chris@0: public function testGet() { Chris@0: $name = new Name('foo'); Chris@0: $this->assertSame('foo', $name->getFirst()); Chris@0: $this->assertSame('foo', $name->getLast()); Chris@0: Chris@0: $name = new Name('foo\bar'); Chris@0: $this->assertSame('foo', $name->getFirst()); Chris@0: $this->assertSame('bar', $name->getLast()); Chris@0: } Chris@0: Chris@0: public function testToString() { Chris@0: $name = new Name('foo\bar'); Chris@0: Chris@0: $this->assertSame('foo\bar', (string) $name); Chris@0: $this->assertSame('foo\bar', $name->toString()); Chris@0: } Chris@0: Chris@0: public function testSlice() { Chris@0: $name = new Name('foo\bar\baz'); Chris@0: $this->assertEquals(new Name('foo\bar\baz'), $name->slice(0)); Chris@0: $this->assertEquals(new Name('bar\baz'), $name->slice(1)); Chris@0: $this->assertNull($name->slice(3)); Chris@0: $this->assertEquals(new Name('foo\bar\baz'), $name->slice(-3)); Chris@0: $this->assertEquals(new Name('bar\baz'), $name->slice(-2)); Chris@0: $this->assertEquals(new Name('foo\bar'), $name->slice(0, -1)); Chris@0: $this->assertNull($name->slice(0, -3)); Chris@0: $this->assertEquals(new Name('bar'), $name->slice(1, -1)); Chris@0: $this->assertNull($name->slice(1, -2)); Chris@0: $this->assertEquals(new Name('bar'), $name->slice(-2, 1)); Chris@0: $this->assertEquals(new Name('bar'), $name->slice(-2, -1)); Chris@0: $this->assertNull($name->slice(-2, -2)); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \OutOfBoundsException Chris@0: * @expectedExceptionMessage Offset 4 is out of bounds Chris@0: */ Chris@0: public function testSliceOffsetTooLarge() { Chris@0: (new Name('foo\bar\baz'))->slice(4); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \OutOfBoundsException Chris@0: * @expectedExceptionMessage Offset -4 is out of bounds Chris@0: */ Chris@0: public function testSliceOffsetTooSmall() { Chris@0: (new Name('foo\bar\baz'))->slice(-4); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \OutOfBoundsException Chris@0: * @expectedExceptionMessage Length 4 is out of bounds Chris@0: */ Chris@0: public function testSliceLengthTooLarge() { Chris@0: (new Name('foo\bar\baz'))->slice(0, 4); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \OutOfBoundsException Chris@0: * @expectedExceptionMessage Length -4 is out of bounds Chris@0: */ Chris@0: public function testSliceLengthTooSmall() { Chris@0: (new Name('foo\bar\baz'))->slice(0, -4); Chris@0: } Chris@0: Chris@0: public function testConcat() { Chris@0: $this->assertEquals(new Name('foo\bar\baz'), Name::concat('foo', 'bar\baz')); Chris@0: $this->assertEquals( Chris@0: new Name\FullyQualified('foo\bar'), Chris@0: Name\FullyQualified::concat(['foo'], new Name('bar')) Chris@0: ); Chris@0: Chris@0: $attributes = ['foo' => 'bar']; Chris@0: $this->assertEquals( Chris@0: new Name\Relative('foo\bar\baz', $attributes), Chris@0: Name\Relative::concat(new Name\FullyQualified('foo\bar'), 'baz', $attributes) Chris@0: ); Chris@0: Chris@0: $this->assertEquals(new Name('foo'), Name::concat(null, 'foo')); Chris@0: $this->assertEquals(new Name('foo'), Name::concat('foo', null)); Chris@0: $this->assertNull(Name::concat(null, null)); Chris@0: } Chris@0: Chris@0: public function testIs() { Chris@0: $name = new Name('foo'); Chris@0: $this->assertTrue ($name->isUnqualified()); Chris@0: $this->assertFalse($name->isQualified()); Chris@0: $this->assertFalse($name->isFullyQualified()); Chris@0: $this->assertFalse($name->isRelative()); Chris@0: Chris@0: $name = new Name('foo\bar'); Chris@0: $this->assertFalse($name->isUnqualified()); Chris@0: $this->assertTrue ($name->isQualified()); Chris@0: $this->assertFalse($name->isFullyQualified()); Chris@0: $this->assertFalse($name->isRelative()); Chris@0: Chris@0: $name = new Name\FullyQualified('foo'); Chris@0: $this->assertFalse($name->isUnqualified()); Chris@0: $this->assertFalse($name->isQualified()); Chris@0: $this->assertTrue ($name->isFullyQualified()); Chris@0: $this->assertFalse($name->isRelative()); Chris@0: Chris@0: $name = new Name\Relative('foo'); Chris@0: $this->assertFalse($name->isUnqualified()); Chris@0: $this->assertFalse($name->isQualified()); Chris@0: $this->assertFalse($name->isFullyQualified()); Chris@0: $this->assertTrue ($name->isRelative()); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \InvalidArgumentException Chris@0: * @expectedExceptionMessage Expected string, array of parts or Name instance Chris@0: */ Chris@0: public function testInvalidArg() { Chris@0: Name::concat('foo', new \stdClass); Chris@0: } Chris@0: }