| OLD | NEW |
| (Empty) |
| 1 <html> | |
| 2 <head> | |
| 3 <title>Test for Range.compareNode()</title> | |
| 4 <script> | |
| 5 function test() | |
| 6 { | |
| 7 // This method returns one of the following constants: | |
| 8 // Node starts before the Range ( NODE_BEFORE = 0 ) | |
| 9 // Node starts after the Range ( NODE_AFTER = 1 ) | |
| 10 // Node starts before and ends after the Range ( NODE_BEFORE_AND_AFTER = 2 ) | |
| 11 // Node starts after and ends before the Range, i.e. the Node is completely | |
| 12 // selected by the Range. ( NODE_INSIDE = 3 ) | |
| 13 | |
| 14 var range = document.createRange(); | |
| 15 | |
| 16 // test 1 - start before range, end before range | |
| 17 expectedResult = 0; | |
| 18 range.selectNode(document.getElementById("a2")); | |
| 19 result = range.compareNode(document.getElementById("b1")); | |
| 20 if (result == expectedResult) | |
| 21 document.getElementById("test1").innerHTML = "test 1 passed: start befor
e range, end before range"; | |
| 22 | |
| 23 // test 2 - start before range, end on 1 | |
| 24 expectedResult = 0; | |
| 25 range.setStart(document.getElementById("b2"), 1); | |
| 26 range.setEnd(document.getElementById("c2"), 1); | |
| 27 result = range.compareNode(document.getElementById("b2")); | |
| 28 if (result == expectedResult) | |
| 29 document.getElementById("test2").innerHTML = "test 2 passed: start befor
e range, end on range start"; | |
| 30 | |
| 31 // test 3 - start before range, end in range | |
| 32 expectedResult = 0; | |
| 33 range.setStart(document.getElementById("b2"), 0); | |
| 34 range.setEnd(document.getElementById("c3"), 0); | |
| 35 result = range.compareNode(document.getElementById("a2")); | |
| 36 if (result == expectedResult) | |
| 37 document.getElementById("test3").innerHTML = "test 3 passed: start befor
e range, end in range"; | |
| 38 | |
| 39 // test 4 - start on 0, end in range | |
| 40 expectedResult = 0; | |
| 41 range.setStart(document.getElementById("b2"), 0); | |
| 42 range.setEnd(document.getElementById("c2"),1); | |
| 43 result = range.compareNode(document.getElementById("b2")); | |
| 44 if (result == expectedResult) | |
| 45 document.getElementById("test4").innerHTML = "test 4 passed: start on ra
nge start, end in range"; | |
| 46 | |
| 47 // test 5 - start in range, end in range | |
| 48 expectedResult = 3; | |
| 49 range.selectNode(document.getElementById("a2")); | |
| 50 result = range.compareNode(document.getElementById("b2")); | |
| 51 if (result == expectedResult) | |
| 52 document.getElementById("test5").innerHTML = "test 5 passed: start in ra
nge, end in range"; | |
| 53 | |
| 54 // test 6 - start in range, end on 1 | |
| 55 expectedResult = 1; | |
| 56 range.setStart(document.getElementById("b1"), 1); | |
| 57 range.setEnd(document.getElementById("c2"), 1); | |
| 58 result = range.compareNode( document.getElementById("c2")); | |
| 59 if (result == expectedResult) | |
| 60 document.getElementById("test6").innerHTML = "test 6 passed: start in ra
nge, end on range end"; | |
| 61 | |
| 62 // test 7 - start in range, end after range end | |
| 63 expectedResult = 1; | |
| 64 range.setStart(document.getElementById("b1"), 1); | |
| 65 range.setEnd(document.getElementById("c2"), 0); | |
| 66 result = range.compareNode( document.getElementById("c2")); | |
| 67 if (result == expectedResult) | |
| 68 document.getElementById("test7").innerHTML = "test 7 passed: start in ra
nge, end after range end"; | |
| 69 | |
| 70 // test 8 - start on 1, end after range | |
| 71 expectedResult = 1; | |
| 72 range.setStart(document.getElementById("b2"), 1); | |
| 73 range.setEnd(document.getElementById("c2"), 0); | |
| 74 result = range.compareNode( document.getElementById("c2")); | |
| 75 if (result == expectedResult) | |
| 76 document.getElementById("test8").innerHTML = "test 8 passed: start on ra
nge end, end after range"; | |
| 77 | |
| 78 // test 9 - start on range start, end on range end | |
| 79 expectedResult = 3; | |
| 80 range.selectNode(document.getElementById("a2")); | |
| 81 result = range.compareNode(document.getElementById("a2")); | |
| 82 if (result == expectedResult) | |
| 83 document.getElementById("test9").innerHTML = "test 9 passed: start on ra
nge start, end on range end"; | |
| 84 | |
| 85 // test 10 - start after range, end after range | |
| 86 expectedResult = 1; | |
| 87 range.selectNode(document.getElementById("b2")); | |
| 88 result = range.compareNode(document.getElementById("c3")); | |
| 89 if (result == expectedResult) | |
| 90 document.getElementById("test10").innerHTML = "test 10 passed: start aft
er range, end after range"; | |
| 91 | |
| 92 // test 11 - start before range, end after range | |
| 93 expectedResult = 2; | |
| 94 range.selectNode(document.getElementById("b2")); | |
| 95 result = range.compareNode(document.getElementById("a2")); | |
| 96 if (result == expectedResult) | |
| 97 document.getElementById("test11").innerHTML = "test 11 passed: start bef
ore range, end after range"; | |
| 98 | |
| 99 // test 12 - start before range, end 1 | |
| 100 expectedResult = 2; | |
| 101 range.setEnd(document.getElementById("c2"), 1); | |
| 102 range.setStart(document.getElementById("c2"), 1); | |
| 103 result = range.compareNode(document.getElementById("c2")); | |
| 104 if (result == expectedResult) | |
| 105 document.getElementById("test12").innerHTML = "test 12 passed: start bef
ore range, end at range end"; | |
| 106 | |
| 107 // test 13 - start at 0, end after range | |
| 108 expectedResult = 2; | |
| 109 range.setStart(document.getElementById("b2"), 0); | |
| 110 range.setEnd(document.getElementById("b2"), 1); | |
| 111 result = range.compareNode(document.getElementById("b2")); | |
| 112 if (result == expectedResult) | |
| 113 document.getElementById("test13").innerHTML = "test 13 passed: start at
range start, end after range"; | |
| 114 | |
| 115 // test 14 - detached range, attached node | |
| 116 expectedResult = 1; | |
| 117 var detachedRange = document.createRange(); | |
| 118 detachedRange.detach(); // no-op. | |
| 119 result = detachedRange.compareNode(document.getElementById("a1")); | |
| 120 if (result == expectedResult) | |
| 121 document.getElementById("test14").innerHTML = "test 14 passed: detached
range, attached node"; | |
| 122 | |
| 123 // test 15 - attached range, detached node | |
| 124 // firefox does not throw an exception and returns 0 for this test | |
| 125 expectedResult = 0; | |
| 126 range.selectNode(document.getElementById("a1")); | |
| 127 var node = document.getElementById("b1"); | |
| 128 node.parentNode.removeChild(node); | |
| 129 result = range.compareNode(node); | |
| 130 if (result == expectedResult) | |
| 131 document.getElementById("test15").innerHTML = "test 15 passed: attached
range, detached node"; | |
| 132 | |
| 133 // test 16 - node has no parent | |
| 134 range.selectNode(document.getElementById("a2")); | |
| 135 try { | |
| 136 result = range.compareNode(document); | |
| 137 } catch (e) { | |
| 138 if(e.code == DOMException.NOT_FOUND_ERR) { | |
| 139 document.getElementById("test16").innerHTML = "test 16 passed: the n
ode has no parent"; | |
| 140 } else { | |
| 141 document.getElementById("test16").innerHTML = "<span style=\"color:
red;\">test 16 failed error: " + e.message + "</span>"; | |
| 142 } | |
| 143 } | |
| 144 | |
| 145 // test 17 - range has no parent | |
| 146 try { | |
| 147 range.selectNode(document); | |
| 148 } catch (e) { | |
| 149 if(e.code == DOMException.INVALID_NODE_TYPE_ERR) { | |
| 150 document.getElementById("test17").innerHTML = "test 17 passed: the r
ange has no parent"; | |
| 151 } else { | |
| 152 document.getElementById("test17").innerHTML = "<span style=\"color:
red;\">test 17 failed error: " + e.message + "\n Code: " + e.code +"</span>"; | |
| 153 } | |
| 154 } | |
| 155 | |
| 156 // test 18 - wrong documents | |
| 157 // firefox does not throw an exception here instead it returns 0 | |
| 158 exptectedResult = 0; | |
| 159 var src1 = "<html>\n<head>\n<body>\n<div id=f1>f1</div>\n</body>\n</head>\n<
html>"; | |
| 160 window.frames['frame1'].document.open("text/html", "replace"); | |
| 161 window.frames['frame1'].document.write(src1); | |
| 162 window.frames['frame1'].document.close(); | |
| 163 | |
| 164 var src2 = "<html>\n<head>\n<body>\n<div id=f2>f2</div>\n</body>\n</head>\n<
html>"; | |
| 165 window.frames['frame2'].document.open("text/html", "replace"); | |
| 166 window.frames['frame2'].document.write(src2); | |
| 167 window.frames['frame2'].document.close(); | |
| 168 | |
| 169 var framerange = window.frames['frame1'].document.createRange(); | |
| 170 var F1Div = window.frames['frame1'].document.getElementById("f1"); | |
| 171 framerange.selectNode(F1Div); | |
| 172 | |
| 173 result = framerange.compareNode(window.frames['frame2'].document.getElementB
yId("f2")); | |
| 174 if (result == expectedResult) | |
| 175 document.getElementById("test18").innerHTML = "test 18 passed: wrong doc
uments"; | |
| 176 | |
| 177 | |
| 178 // test 19 - node deleted | |
| 179 range.selectNode(document.getElementById("a2")); | |
| 180 var node = null; | |
| 181 try { | |
| 182 result = range.compareNode(node); | |
| 183 } catch (e) { | |
| 184 if(e.name == "TypeError") { | |
| 185 document.getElementById("test19").innerHTML = "test 19 passed: delet
ed node"; | |
| 186 } else { | |
| 187 document.getElementById("test19").innerHTML = "<span style=\"color:
red;\">test 19 failed error: " + e.message + "</span>"; | |
| 188 } | |
| 189 } | |
| 190 | |
| 191 if (window.testRunner) | |
| 192 testRunner.dumpAsText(); | |
| 193 } | |
| 194 | |
| 195 </script> | |
| 196 </head> | |
| 197 <body onload="test();"> | |
| 198 | |
| 199 <!-- visible area with test results --> | |
| 200 <div id=test1><span style="color: red;">test 1 failed</span></div> | |
| 201 <div id=test2><span style="color: red;">test 2 failed</span></div> | |
| 202 <div id=test3><span style="color: red;">test 3 failed</span></div> | |
| 203 <div id=test4><span style="color: red;">test 4 failed</span></div> | |
| 204 <div id=test5><span style="color: red;">test 5 failed</span></div> | |
| 205 <div id=test6><span style="color: red;">test 6 failed</span></div> | |
| 206 <div id=test7><span style="color: red;">test 7 failed</span></div> | |
| 207 <div id=test8><span style="color: red;">test 8 failed</span></div> | |
| 208 <div id=test9><span style="color: red;">test 9 failed</span></div> | |
| 209 <div id=test10><span style="color: red;">test 10 failed</span></div> | |
| 210 <div id=test11><span style="color: red;">test 11 failed</span></div> | |
| 211 <div id=test12><span style="color: red;">test 12 failed</span></div> | |
| 212 <div id=test13><span style="color: red;">test 13 failed</span></div> | |
| 213 <div id=test14><span style="color: red;">test 14 failed</span></div> | |
| 214 <div id=test15><span style="color: red;">test 15 failed</span></div> | |
| 215 <div id=test16><span style="color: red;">test 16 failed</span></div> | |
| 216 <div id=test17><span style="color: red;">test 17 failed</span></div> | |
| 217 <div id=test18><span style="color: red;">test 18 failed</span></div> | |
| 218 <div id=test19><span style="color: red;">test 19 failed</span></div> | |
| 219 <!-- hidden area to create the ranges being tested --> | |
| 220 <div style="visibility: hidden"> | |
| 221 <div id=a1>a1 | |
| 222 <div id=b1>b1</div> | |
| 223 <div id=c1>c1</div> | |
| 224 </div> | |
| 225 | |
| 226 <div id=a2>a2 | |
| 227 <div id=b2>b2</div> | |
| 228 <div id=c2>c2</div> | |
| 229 </div> | |
| 230 <div id=a3>a3 | |
| 231 <div id=b3>b3</div> | |
| 232 <div id=c3>c3</div> | |
| 233 </div> | |
| 234 | |
| 235 <iframe name="frame1" style="border: 1px solid black;"></iframe> | |
| 236 <iframe name="frame2" style="border: 1px solid black;"></iframe> | |
| 237 </div> | |
| 238 | |
| 239 </body> | |
| 240 </html> | |
| OLD | NEW |