1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/ext/dom/tests/modern/html/interactions/HTMLCollection_named_reads.phpt
2024-05-09 10:40:53 +02:00

83 lines
1.9 KiB
PHP

--TEST--
HTMLCollection::namedItem() and dimension handling for named accesses
--EXTENSIONS--
dom
--FILE--
<?php
$xml = <<<XML
<!DOCTYPE root [
<!ENTITY ent "test">
]>
<root>
<node name="foo">1</node>
<x id="foo">2</x>
<x id="foo&ent;">2 with entity</x>
<node test:id="foo" xmlns:test="http://example.com">3</node>
<node id="wrong">4</node>
<node id="foo">5</node>
<node name="bar">without html ns</node>
<node name="bar" xmlns="http://www.w3.org/1999/xhtml">with html ns</node>
</root>
XML;
$dom = Dom\XMLDocument::createFromString($xml);
function test($obj, $name) {
echo "--- Query \"$name\" ---\n";
var_dump($obj->namedItem($name)?->textContent);
var_dump($obj[$name]?->textContent);
var_dump(isset($obj[$name]));
// Search to check for dimension access consistency
$node = $obj[$name];
if ($node) {
$found = false;
for ($i = 0; $i < $obj->length && !$found; $i++) {
$found = $obj[$i] === $node;
}
if (!$found) {
throw new Error('inconsistency in dimension access');
}
}
}
test($dom->getElementsByTagName('node'), 'foo');
test($dom->getElementsByTagName('node'), '');
test($dom->getElementsByTagName('node'), 'does not exist');
test($dom->getElementsByTagName('node'), 'wrong');
test($dom->getElementsByTagName('node'), 'bar');
test($dom->getElementsByTagName('x'), 'foo');
test($dom->getElementsByTagName('x'), 'footest');
?>
--EXPECT--
--- Query "foo" ---
string(1) "5"
string(1) "5"
bool(true)
--- Query "" ---
NULL
NULL
bool(false)
--- Query "does not exist" ---
NULL
NULL
bool(false)
--- Query "wrong" ---
string(1) "4"
string(1) "4"
bool(true)
--- Query "bar" ---
string(12) "with html ns"
string(12) "with html ns"
bool(true)
--- Query "foo" ---
string(1) "2"
string(1) "2"
bool(true)
--- Query "footest" ---
string(13) "2 with entity"
string(13) "2 with entity"
bool(true)