CharacterData-substringData.html (4623B)
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-substringdata"> 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_js(TypeError, function() { node.substringData() }) 16 assert_throws_js(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_dom("IndexSizeError", function() { node.substringData(5, 0) }) 31 assert_throws_dom("IndexSizeError", function() { node.substringData(6, 0) }) 32 assert_throws_dom("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>