Example #1
0
 /**
  * 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);
 }
Example #3
0
 protected function _init()
 {
     $this->_keys = array_keys($this->_container->toArray());
 }