예제 #1
0
 /**
  * @param \PHP\Manipulator\Tokenfinder\Result $other
  * @param  string $description Additional information about the test
  * @param  bool $returnResult Whether to return a result or throw an exception
  * @return boolean
  */
 public function evaluate($other, $description = '', $returnResult = FALSE)
 {
     if (!$other instanceof Result) {
         throw \PHPUnit_Util_InvalidArgumentHelper::factory(1, 'PHP\\Manipulator\\Tokenfinder\\Result');
     }
     $expectedResultTokens = $this->_expectedResult->getTokens();
     $actualResultTokens = $other->getTokens();
     if (count($expectedResultTokens) != count($actualResultTokens)) {
         $this->_cause = 'length';
         if ($returnResult) {
             return FALSE;
         }
         $this->fail($other, $description);
     }
     foreach ($expectedResultTokens as $key => $token) {
         if ($token !== $actualResultTokens[$key]) {
             $this->_cause = 'missmatch of token: ' . $key;
             if ($returnResult) {
                 return FALSE;
             }
             $this->fail($other, $description);
         }
     }
     return true;
 }
예제 #2
0
 /**
  * @covers \PHP\Manipulator\TokenFinder\Result::getTokens
  */
 public function testGetTokens()
 {
     $token = new Token('foo');
     $token2 = new Token('baa');
     $result = new Result();
     $result->addToken($token);
     $result->addToken($token2);
     $tokens = $result->getTokens();
     $this->assertInternalType('array', $tokens);
     $this->assertCount(2, $tokens);
     $this->assertContains($token, $tokens);
     $this->assertContains($token2, $tokens);
 }
예제 #3
0
 /**
  * Compare two Results
  *
  * @param \PHP\Manipulator\Tokenfinder\Result $expectedResult
  * @param \PHP\Manipulator\Tokenfinder\Result $actualResult
  */
 public static function compareResults(Result $expectedResult, Result $actualResult)
 {
     $expectedIterator = new \ArrayIterator($expectedResult->getTokens());
     $actualIterator = new \ArrayIterator($actualResult->getTokens());
     $values = array();
     $longest = 0;
     while ($actualIterator->valid() || $expectedIterator->valid()) {
         $expected = '';
         $actual = '';
         if ($expectedIterator->valid()) {
             $expected = (string) self::dumpToken($expectedIterator->current(), false);
         }
         if ($actualIterator->valid()) {
             $actual = (string) self::dumpToken($actualIterator->current(), false);
         }
         $values[] = array('actual' => $actual, 'expected' => $expected, 'missmatch' => (bool) ($actualIterator->current() !== $expectedIterator->current()));
         if (strlen($actual) > $longest) {
             $longest = strlen($actual);
         }
         if (strlen($expected) > $longest) {
             $longest = strlen($expected);
         }
         $expectedIterator->next();
         $actualIterator->next();
     }
     $comparision = '    ';
     $comparision .= str_pad('expected (' . count($expectedResult) . ')', $longest + 2, ' ', STR_PAD_BOTH);
     $comparision .= ' | ';
     $comparision .= str_pad('actual(' . count($actualResult) . ')', $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++;
     }
     return $comparision;
 }