class DOMNodeComparator
Hierarchy
- class \SebastianBergmann\Comparator\Comparator
- class \SebastianBergmann\Comparator\ArrayComparator extends \SebastianBergmann\Comparator\Comparator
- class \SebastianBergmann\Comparator\ObjectComparator extends \SebastianBergmann\Comparator\ArrayComparator
- class \SebastianBergmann\Comparator\DOMNodeComparator extends \SebastianBergmann\Comparator\ObjectComparator
- class \SebastianBergmann\Comparator\ObjectComparator extends \SebastianBergmann\Comparator\ArrayComparator
- class \SebastianBergmann\Comparator\ArrayComparator extends \SebastianBergmann\Comparator\Comparator
Expanded class hierarchy of DOMNodeComparator
File
-
vendor/
sebastian/ comparator/ src/ DOMNodeComparator.php, line 19
Namespace
SebastianBergmann\ComparatorView source
final class DOMNodeComparator extends ObjectComparator {
public function accepts(mixed $expected, mixed $actual) : bool {
return $expected instanceof DOMNode && $actual instanceof DOMNode;
}
/**
* @throws ComparisonFailure
*/
public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []) : void {
assert($expected instanceof DOMNode);
assert($actual instanceof DOMNode);
$expectedAsString = $this->nodeToText($expected, true, $ignoreCase);
$actualAsString = $this->nodeToText($actual, true, $ignoreCase);
if ($expectedAsString !== $actualAsString) {
$type = $expected instanceof DOMDocument ? 'documents' : 'nodes';
throw new ComparisonFailure($expected, $actual, $expectedAsString, $actualAsString, sprintf("Failed asserting that two DOM %s are equal.\n", $type));
}
}
/**
* Returns the normalized, whitespace-cleaned, and indented textual
* representation of a DOMNode.
*/
private function nodeToText(DOMNode $node, bool $canonicalize, bool $ignoreCase) : string {
if ($canonicalize) {
$document = new DOMDocument();
try {
$c14n = $node->C14N();
assert(!empty($c14n));
@$document->loadXML($c14n);
} catch (ValueError) {
}
$node = $document;
}
$document = $node instanceof DOMDocument ? $node : $node->ownerDocument;
$document->formatOutput = true;
$document->normalizeDocument();
$text = $node instanceof DOMDocument ? $node->saveXML() : $document->saveXML($node);
return $ignoreCase ? mb_strtolower($text, 'UTF-8') : $text;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
ArrayComparator::indent | private | function | |||
Comparator::$factory | private | property | |||
Comparator::factory | protected | function | |||
Comparator::setFactory | public | function | |||
DOMNodeComparator::accepts | public | function | Overrides ObjectComparator::accepts | ||
DOMNodeComparator::assertEquals | public | function | Overrides ObjectComparator::assertEquals | ||
DOMNodeComparator::nodeToText | private | function | Returns the normalized, whitespace-cleaned, and indented textual representation of a DOMNode. |
||
ObjectComparator::toArray | protected | function | 2 |