public function testAppend() { $iterator = new tokenizer\iterator(); $this->assert->variable($iterator->key())->isNull()->variable($iterator->current())->isNull()->object($iterator->append($token1 = new tokenizer\token(uniqid())))->isIdenticalTo($iterator)->integer($iterator->key())->isZero()->object($iterator->current())->isIdenticalTo($token1); $iterator = new tokenizer\iterator(); $innerIterator = new tokenizer\iterator(); $innerIterator->append($token1 = new tokenizer\token(uniqid()))->append($token2 = new tokenizer\token(uniqid())); $this->assert->variable($iterator->key())->isNull()->variable($iterator->current())->isNull()->object($iterator->append($innerIterator))->isIdenticalTo($iterator)->integer($iterator->key())->isZero()->object($iterator->current())->isIdenticalTo($token1); $iterator->end()->next(); $otherInnerIterator = new tokenizer\iterator(); $otherInnerIterator->append($token3 = new tokenizer\token(uniqid()))->append($token4 = new tokenizer\token(uniqid()))->end(); $this->assert->variable($iterator->key())->isNull()->variable($iterator->current())->isNull()->integer($otherInnerIterator->key())->isEqualTo(1)->object($otherInnerIterator->current())->isIdenticalTo($token4)->object($iterator->append($otherInnerIterator))->isIdenticalTo($iterator)->integer($iterator->key())->isEqualTo(2)->object($iterator->current())->isIdenticalTo($token3)->integer($otherInnerIterator->key())->isZero()->object($otherInnerIterator->current())->isIdenticalTo($token3); $this->assert->exception(function () use($iterator, $innerIterator) { $iterator->append($innerIterator); })->isInstanceOf('mageekguy\\atoum\\exceptions\\runtime')->hasMessage('Unable to append value because it has already a parent'); $iterator = new tokenizer\iterator(); $iterator->skipValue($skipedValue = uniqid()); $innerIterator = new tokenizer\iterator(); $this->assert->object($iterator->append($innerIterator))->isIdenticalTo($iterator)->sizeOf($iterator)->isZero()->array($innerIterator->getSkipedValues())->isEmpty(); $iterator = new tokenizer\iterator(); $iterator->skipValue($skipedValue = uniqid()); $innerIterator = new tokenizer\iterator(); $innerIterator->skipValue($skipedValue); $this->assert->object($iterator->append($innerIterator))->isIdenticalTo($iterator)->sizeOf($iterator)->isZero()->array($innerIterator->getSkipedValues())->isEqualTo(array($skipedValue)); $iterator = new tokenizer\iterator(); $iterator->skipValue($skipedValue1 = uniqid()); $iterator = new tokenizer\iterator(); $iterator->append($token1 = new tokenizer\token(uniqid()))->append($token2 = new tokenizer\token(uniqid()))->append($token3 = new tokenizer\token(uniqid())); $this->assert->object($iterator->current())->isIdenticalTo($token1); }