File: sethtml-tree-construction.tentative.html

package info (click to toggle)
firefox 149.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,767,760 kB
  • sloc: cpp: 7,416,064; javascript: 6,752,859; ansic: 3,774,850; python: 1,250,473; xml: 641,578; asm: 439,191; java: 186,617; sh: 56,634; makefile: 18,856; objc: 13,092; perl: 12,763; pascal: 5,960; yacc: 4,583; cs: 3,846; lex: 1,720; ruby: 1,002; php: 436; lisp: 258; awk: 105; sql: 66; sed: 53; csh: 10; exp: 6
file content (70 lines) | stat: -rw-r--r-- 2,475 bytes parent folder | download | duplicates (14)
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<!DOCTYPE html>
<head>
<title>Testcases from the previous Sanitizer API</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/html5lib-testcase-support.js"></script>
<script>

// Testcases from the old(er) support/testcases.sub.js file, ported over to
// the HTML5Lib testcase format.
promise_test(_ => {
  return html5lib_testcases_from_response(fetch("sethtml-tree-construction.sub.dat")).
      then(testcases => {
        testcases.forEach((testcase, index) => {
          test(_ => {
            const div = document.createElement("div");
            let config = undefined;
            try {
              config = JSON.parse(testcase.config);
            } catch { }
            try {
              div.setHTML(testcase.data, { sanitizer: config });
            } catch (error) {
              assert_equals(
                error.name, testcase.error,
                `Expect exception ${testcase.error}, but got ${error}.`);
              return;  // Early return in order to not trigger the subsequent
                       // assertions.
            }
            assert_false(
              !!testcase.error,
              `Expect exception ${testcase.error}, but nothing was thrown.`);
            assert_testcase(div, testcase);
          }, `Testcase #${index}, "${testcase.data}", config: "${testcase.config}".`);
        });
      });
}, "wrapper");

// support/testcases.sub.js contained a few testcases with non-strings as
// input. The html5lib format doesn't support that, so we'll just add them here:
test(_ => {
  const div = document.createElement("div");
  div.setHTML({});
  assert_equals(div.outerHTML, "<div>[object Object]</div>");
}, "Non-string input: empty object.");
test(_ => {
  const div = document.createElement("div");
  div.setHTML(1);
  assert_equals(div.outerHTML, "<div>1</div>");
}, "Non-string input: number.");
test(_ => {
  const div = document.createElement("div");
  div.setHTML(000);
  assert_equals(div.outerHTML, "<div>0</div>");
}, "Non-string input: octal number.");
test(_ => {
  const div = document.createElement("div");
  div.setHTML(1 + 2);
  assert_equals(div.outerHTML, "<div>3</div>");
}, "Non-string input: expression.");
test(_ => {
  const div = document.createElement("div");
  div.setHTML(undefined);
  assert_equals(div.outerHTML, "<div>undefined</div>");
}, "Non-string input: undefined.");

</script>
</head>
<body>
</body>