test_bug454325.html (4678B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 https://bugzilla.mozilla.org/show_bug.cgi?id=454325 5 --> 6 <head> 7 <title>Test for Bug 454325</title> 8 <script src="/tests/SimpleTest/SimpleTest.js"></script> 9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 10 </head> 11 <body> 12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=454325">Mozilla Bug 454325</a> 13 <p id="display"></p> 14 <div id="content" style="display: none"> 15 16 </div> 17 <pre id="test"> 18 <script class="testbody" type="text/javascript"> 19 20 /** Test for Bug 454325 */ 21 22 function testDocument1() { 23 var doc = document.implementation.createDocument("", "", null); 24 var html = doc.createElement('html'); 25 doc.appendChild(html); 26 var body = doc.createElement('body'); 27 html.appendChild(body); 28 var h1 = doc.createElement('h1'); 29 var t1 = doc.createTextNode('Hello '); 30 h1.appendChild(t1); 31 var em = doc.createElement('em'); 32 var t2 = doc.createTextNode('Wonderful'); 33 em.appendChild(t2); 34 h1.appendChild(em); 35 var t3 = doc.createTextNode(' Kitty'); 36 h1.appendChild(t3); 37 body.appendChild(h1); 38 var p = doc.createElement('p'); 39 var t4 = doc.createTextNode(' How are you?'); 40 p.appendChild(t4); 41 body.appendChild(p); 42 var r = doc.createRange(); 43 r.selectNodeContents(doc); 44 is(r.toString(), "Hello Wonderful Kitty How are you?", 45 "toString() on range selecting Document gave wrong output"); 46 r.setStart(h1, 3); 47 r.setEnd(p, 0); 48 // <html><body><h1>Hello <em>Wonder ful<\em> Kitty<\h1><p>How are you?<\p><\body></html> 49 // ^ -----^ 50 is(r.toString(), "", "toString() on range crossing text nodes gave wrong output"); 51 var c1 = r.cloneContents(); 52 is(c1.childNodes.length, 2, "Wrong child nodes"); 53 try { 54 is(c1.childNodes[0].localName, "h1", "Wrong child node"); 55 is(c1.childNodes[1].localName, "p", "Wrong child node"); 56 } catch(ex) { 57 ok(!ex, ex); 58 } 59 60 r.setStart(t2, 6); 61 r.setEnd(p, 0); 62 // <html><body><h1>Hello <em>Wonder ful<\em> Kitty<\h1><p>How are you?<\p><\body></html> 63 // ^----------------------^ 64 is(r.toString(), "ful Kitty", "toString() on range crossing text nodes gave wrong output"); 65 var c2 = r.cloneContents(); 66 is(c2.childNodes.length, 2, "Wrong child nodes"); 67 try { 68 is(c1.childNodes[0].localName, "h1", "Wrong child node"); 69 is(c1.childNodes[1].localName, "p", "Wrong child node"); 70 } catch(ex) { 71 ok(!ex, ex); 72 } 73 74 var e1 = r.extractContents(); 75 is(e1.childNodes.length, 2, "Wrong child nodes"); 76 try { 77 is(e1.childNodes[0].localName, "h1", "Wrong child node"); 78 is(e1.childNodes[1].localName, "p", "Wrong child node"); 79 } catch(ex) { 80 ok(!ex, ex); 81 } 82 } 83 84 function testDocument2() { 85 var doc = document.implementation.createDocument("", "", null); 86 var html = doc.createElement('html'); 87 doc.appendChild(html); 88 var head = doc.createElement('head'); 89 html.appendChild(head); 90 var foohead = doc.createElement('foohead'); 91 html.appendChild(foohead); 92 var body = doc.createElement('body'); 93 html.appendChild(body); 94 var d1 = doc.createElement('div'); 95 head.appendChild(d1); 96 var t1 = doc.createTextNode("|||"); 97 d1.appendChild(t1); 98 var d2 = doc.createElement("div"); 99 body.appendChild(d2); 100 var d3 = doc.createElement("div"); 101 d2.appendChild(d3); 102 var d4 = doc.createElement("div"); 103 d2.appendChild(d4); 104 var r = doc.createRange(); 105 r.setStart(t1, 1); 106 r.setEnd(d2, 2); 107 is(r.toString(), "||", "Wrong range"); 108 var c1 = r.cloneContents(); 109 var e1 = r.extractContents(); 110 ok(c1.isEqualNode(e1), "Wrong cloning or extracting!"); 111 } 112 113 function testSurroundContents() { 114 var div = document.createElement('div'); 115 document.body.appendChild(div); 116 div.innerHTML = '<div>hello</div>world'; 117 var innerDiv = div.firstChild; 118 var hello = innerDiv.firstChild; 119 var range = document.createRange(); 120 range.setStart(hello, 0); 121 range.setEnd(hello, 5); 122 range.surroundContents(document.createElement('code')); 123 is(innerDiv.childNodes.length, 3, "Wrong childNodes count"); 124 is(innerDiv.childNodes[0].nodeName, "#text", "Wrong node name (1)"); 125 is(innerDiv.childNodes[0].textContent, "", "Wrong textContent (1)"); 126 is(innerDiv.childNodes[1].nodeName, "CODE", "Wrong node name (2)"); 127 is(innerDiv.childNodes[1].textContent, "hello", "Wrong textContent (2)"); 128 is(innerDiv.childNodes[2].nodeName, "#text", "Wrong node name (3)"); 129 is(innerDiv.childNodes[2].textContent, "", "Wrong textContent (3)"); 130 } 131 132 function runTest() { 133 testDocument1(); 134 testDocument2(); 135 testSurroundContents(); 136 SimpleTest.finish(); 137 } 138 139 SimpleTest.waitForExplicitFinish(); 140 addLoadEvent(runTest); 141 142 143 </script> 144 </pre> 145 </body> 146 </html>