Reviewed by Darin.
[WebKit-https.git] / LayoutTests / fast / dom / Range / range-processing-instructions.html
1 <div>Test that Range manipulations work with ProcessingInstruction nodes.</div>
2 <script>
3   if (window.layoutTestController)
4     layoutTestController.dumpAsText();
5
6   function dumpRange(range) {
7       if (range.startContainer == range.endContainer)
8           return range.startContainer.nodeName + " " + range.startOffset + " - " + range.endOffset;
9       else
10           return range.startContainer.nodeName + " " + range.startOffset + " - " + range.endContainer.nodeName + " " + range.endOffset;
11   }
12
13   var docString = "<foo><" + "?pi SUCC_FAILURE_ESS?><" + "?pi SUCC_FAILURE_ESS?></foo>";
14
15   try {
16     var doc = (new DOMParser).parseFromString(docString, "application/xml");
17     var foo = doc.getElementsByTagName("foo")[0];
18
19     var range = doc.createRange();
20     range.setStart(foo.firstChild, 4);
21     range.setEnd(foo.firstChild, 13);
22     range.deleteContents();
23
24     document.write("Test 1: " + foo.firstChild.data);
25   } catch (ex) {
26     document.write("Test 1: " + ex);
27   }
28   
29   document.write("<br>");
30   
31   try {
32     var doc = (new DOMParser).parseFromString(docString, "application/xml");
33     var foo = doc.getElementsByTagName("foo")[0];
34
35     var range = doc.createRange();
36     range.setStart(foo.firstChild, 4);
37     range.setEnd(foo.firstChild.nextSibling, 13);
38     range.deleteContents();
39
40     document.write("Test 2: " + foo.firstChild.data + foo.firstChild.nextSibling.data);
41   } catch (ex) {
42     document.write("Test 2: " + ex);
43   }
44
45   document.write("<br>");
46
47   try {
48     var doc = (new DOMParser).parseFromString(docString, "application/xml");
49     var foo = doc.getElementsByTagName("foo")[0];
50
51     var range = doc.createRange();
52     range.setStart(foo, 0);
53     range.setEnd(foo.firstChild, 2);
54     var data1 = range.cloneContents().firstChild.data;
55
56     range.setStart(foo.firstChild, 2);
57     range.setEnd(foo.firstChild, 4);
58     var data2 = range.cloneContents().firstChild.data;
59
60     range.setStart(foo.firstChild.nextSibling, 13);
61     range.setEnd(foo, 2);
62     var data3 = range.cloneContents().firstChild.data;
63
64     document.write("Test 3: " + data1 + data2 + data3);
65   } catch (ex) {
66     document.write("Test 3: " + ex);
67   }
68 </script>