/** * Compare Containers * * Returns string-presentation of both containers next to each other * * @param \PHP\Manipulator\TokenContainer $expected * @param \PHP\Manipulator\TokenContainer $secod */ public static function compareContainers(TokenContainer $expectedContainer, TokenContainer $actualContainer, $strict) { $expectedIterator = new \ArrayIterator($expectedContainer->toArray()); $actualIterator = new \ArrayIterator($actualContainer->toArray()); $values = array(); $longest = 0; while ($actualIterator->valid() || $expectedIterator->valid()) { $expected = ''; $actual = ''; $missmatch = true; if ($expectedIterator->valid()) { $expected = (string) self::dumpToken($expectedIterator->current(), false); } if ($actualIterator->valid()) { $actual = (string) self::dumpToken($actualIterator->current(), false); } if ($actualIterator->valid() && $expectedIterator->valid()) { $constraint = new TokensMatchConstraint($expectedIterator->current(), $strict); $missmatch = !$constraint->evaluate($actualIterator->current(), '', true); } $values[] = array('actual' => $actual, 'expected' => $expected, 'missmatch' => $missmatch); if (strlen($actual) > $longest) { $longest = strlen($actual); } if (strlen($expected) > $longest) { $longest = strlen($expected); } $expectedIterator->next(); $actualIterator->next(); } $comparision = ' '; $comparision .= str_pad('Tokens: ' . count($expectedContainer), $longest + 2, ' ', STR_PAD_BOTH); $comparision .= ' | '; $comparision .= str_pad('Tokens: ' . count($actualContainer), $longest + 2, ' ', STR_PAD_BOTH); $comparision .= PHP_EOL; $comparision .= PHP_EOL; $i = 0; foreach ($values as $val) { if (true === $val['missmatch']) { $comparision .= '####### NEXT IS DIFFERENT ## ' . PHP_EOL; } $comparision .= str_pad($i . ') ', 4, ' '); $comparision .= str_pad($val['expected'], $longest + 2, ' '); $comparision .= ' | '; $comparision .= str_pad($val['actual'], $longest + 2, ' '); $comparision .= PHP_EOL; $i++; } $comparision = rtrim($comparision); return $comparision; }
/** * @covers \PHP\Manipulator\TokenContainer::removeTokensFromTo */ public function testRemoveTokensFromTo() { $t1 = Token::factory('Token1'); $t2 = Token::factory('Token2'); $t3 = Token::factory('Token3'); $t4 = Token::factory('Token4'); $t5 = Token::factory('Token5'); $container = new TokenContainer(array($t1, $t2, $t3, $t4, $t5)); $container->removeTokensFromTo($t2, $t4); $array = $container->toArray(); $this->assertCount(2, $array); $this->assertContains($t1, $array); $this->assertContains($t5, $array); }
protected function _init() { $this->_keys = array_keys($this->_container->toArray()); }