File: test_utils.inc

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (46 lines) | stat: -rw-r--r-- 1,395 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php

function test_helper(DOM\ParentNode $dom, string $selector, bool $only_name = false)
{
    echo "--- Selector: $selector ---\n";

    $all = $dom->querySelectorAll($selector);
    $single = $dom->querySelector($selector);

    if ((count($all) === 0 && $single !== null) || ($all[0] !== $single)) {
        throw new Exception('Mismatch in querySelector and querySelectorAll');
    }

    $list = [];
    foreach ($all as $node) {
        $list[] = $node;

        if ($only_name) {
            echo $node->nodeName, "\n";
            continue;
        }

        echo $dom->saveXML($node), "\n";
    }

    // If the element is in the list, then it must match, otherwise it must not
    // This loops over all the elements in the document and checks them
    foreach ($dom->querySelectorAll('*') as $node) {
        if (in_array($node, $list, true) !== $node->matches($selector)) {
            var_dump($node, $selector, in_array($node, $list, true), $node->matches($selector));
            echo $dom->saveXML($node), "\n";
            throw new Exception('Bug in Element::matches()');
        }
    }
}

function test_failure(DOM\ParentNode $dom, string $selector)
{
    echo "--- Selector: $selector ---\n";

    try {
        var_dump(count($dom->querySelectorAll($selector)));
    } catch (DOMException $e) {
        echo "Code ", $e->getCode(), " ", $e->getMessage(), "\n";
    }
}