public function testNested() { $manager = new Manager(); $a = $manager->namedStart('A'); $b = $manager->namedStart('B'); $this->assertNull($a->getParent()); $this->assertSame($a, $b->getParent()); $this->assertSame($b, $manager->stop()); $c = $manager->namedStart('C'); $this->assertSame($a, $c->getParent()); $d = $manager->namedStart('D'); $this->assertSame($d, $manager->stop()); $this->assertSame($c, $manager->stop()); $this->assertSame($a, $manager->stop()); $e = $manager->namedStart('E'); $this->assertSame($e, $manager->stop()); $this->assertSame($a, $manager->getIterator()->offsetGet(0)); $this->assertSame($b, $a->getIterator()->offsetGet(0)); $this->assertSame($c, $a->getIterator()->offsetGet(1)); $this->assertSame($d, $c->getIterator()->offsetGet(0)); $this->assertSame($e, $manager->getIterator()->offsetGet(1)); $z = $manager->namedStart('Z'); $this->assertSame($z, $manager->discard()); $this->assertSame(2, $manager->getIterator()->count()); }