OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <meta charset=utf-8> | |
3 <title>CharacterData.substringData</title> | |
4 <link rel=help href="https://dom.spec.whatwg.org/#dom-characterdata-substringdat
a"> | |
5 <link rel=help href="https://dom.spec.whatwg.org/#dom-characterdata-data"> | |
6 <script src="../../../../resources/testharness.js"></script> | |
7 <script src="../../../../resources/testharnessreport.js"></script> | |
8 <div id="log"></div> | |
9 <script> | |
10 function testNode(create, type) { | |
11 test(function() { | |
12 var node = create() | |
13 assert_equals(node.data, "test") | |
14 | |
15 assert_throws(new TypeError(), function() { node.substringData() }) | |
16 assert_throws(new TypeError(), function() { node.substringData(0) }) | |
17 }, type + ".substringData() with too few arguments") | |
18 | |
19 test(function() { | |
20 var node = create() | |
21 assert_equals(node.data, "test") | |
22 | |
23 assert_equals(node.substringData(0, 1, "test"), "t") | |
24 }, type + ".substringData() with too many arguments") | |
25 | |
26 test(function() { | |
27 var node = create() | |
28 assert_equals(node.data, "test") | |
29 | |
30 assert_throws("IndexSizeError", function() { node.substringData(5, 0) }) | |
31 assert_throws("IndexSizeError", function() { node.substringData(6, 0) }) | |
32 assert_throws("IndexSizeError", function() { node.substringData(-1, 0) }) | |
33 }, type + ".substringData() with invalid offset") | |
34 | |
35 test(function() { | |
36 var node = create() | |
37 assert_equals(node.data, "test") | |
38 | |
39 assert_equals(node.substringData(0, 1), "t") | |
40 assert_equals(node.substringData(1, 1), "e") | |
41 assert_equals(node.substringData(2, 1), "s") | |
42 assert_equals(node.substringData(3, 1), "t") | |
43 assert_equals(node.substringData(4, 1), "") | |
44 }, type + ".substringData() with in-bounds offset") | |
45 | |
46 test(function() { | |
47 var node = create() | |
48 assert_equals(node.data, "test") | |
49 | |
50 assert_equals(node.substringData(0, 0), "") | |
51 assert_equals(node.substringData(1, 0), "") | |
52 assert_equals(node.substringData(2, 0), "") | |
53 assert_equals(node.substringData(3, 0), "") | |
54 assert_equals(node.substringData(4, 0), "") | |
55 }, type + ".substringData() with zero count") | |
56 | |
57 test(function() { | |
58 var node = create() | |
59 assert_equals(node.data, "test") | |
60 | |
61 assert_equals(node.substringData(0x100000000 + 0, 1), "t") | |
62 assert_equals(node.substringData(0x100000000 + 1, 1), "e") | |
63 assert_equals(node.substringData(0x100000000 + 2, 1), "s") | |
64 assert_equals(node.substringData(0x100000000 + 3, 1), "t") | |
65 assert_equals(node.substringData(0x100000000 + 4, 1), "") | |
66 }, type + ".substringData() with very large offset") | |
67 | |
68 test(function() { | |
69 var node = create() | |
70 assert_equals(node.data, "test") | |
71 | |
72 assert_equals(node.substringData(-0x100000000 + 2, 1), "s") | |
73 }, type + ".substringData() with negative offset") | |
74 | |
75 test(function() { | |
76 var node = create() | |
77 assert_equals(node.data, "test") | |
78 | |
79 assert_equals(node.substringData("test", 3), "tes") | |
80 }, type + ".substringData() with string offset") | |
81 | |
82 test(function() { | |
83 var node = create() | |
84 assert_equals(node.data, "test") | |
85 | |
86 assert_equals(node.substringData(0, 1), "t") | |
87 assert_equals(node.substringData(0, 2), "te") | |
88 assert_equals(node.substringData(0, 3), "tes") | |
89 assert_equals(node.substringData(0, 4), "test") | |
90 }, type + ".substringData() with in-bounds count") | |
91 | |
92 test(function() { | |
93 var node = create() | |
94 assert_equals(node.data, "test") | |
95 | |
96 assert_equals(node.substringData(0, 5), "test") | |
97 assert_equals(node.substringData(2, 20), "st") | |
98 }, type + ".substringData() with large count") | |
99 | |
100 test(function() { | |
101 var node = create() | |
102 assert_equals(node.data, "test") | |
103 | |
104 assert_equals(node.substringData(2, 0x100000000 + 1), "s") | |
105 }, type + ".substringData() with very large count") | |
106 | |
107 test(function() { | |
108 var node = create() | |
109 assert_equals(node.data, "test") | |
110 | |
111 assert_equals(node.substringData(0, -1), "test") | |
112 assert_equals(node.substringData(0, -0x100000000 + 2), "te") | |
113 }, type + ".substringData() with negative count") | |
114 | |
115 test(function() { | |
116 var node = create() | |
117 assert_equals(node.data, "test") | |
118 | |
119 node.data = "This is the character data test, other 資料,更多文字" | |
120 | |
121 assert_equals(node.substringData(12, 4), "char") | |
122 assert_equals(node.substringData(39, 2), "資料") | |
123 }, type + ".substringData() with non-ASCII data") | |
124 | |
125 test(function() { | |
126 var node = create() | |
127 assert_equals(node.data, "test") | |
128 | |
129 node.data = "🌠 test 🌠 TEST" | |
130 | |
131 assert_equals(node.substringData(5, 8), "st 🌠 TE") // Counting UTF-16 code
units | |
132 }, type + ".substringData() with non-BMP data") | |
133 } | |
134 | |
135 testNode(function() { return document.createTextNode("test") }, "Text") | |
136 testNode(function() { return document.createComment("test") }, "Comment") | |
137 </script> | |
OLD | NEW |