/** * @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; }
/** * @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); }
/** * 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; }