1<html xmlns="http://www.w3.org/1999/xhtml">
2<!--
3https://bugzilla.mozilla.org/show_bug.cgi?id=686449
4-->
5<head>
6  <title>Test for Bug 686449</title>
7  <script src="/tests/SimpleTest/SimpleTest.js"></script>
8  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
9</head>
10<body>
11<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=686449">Mozilla Bug 686449</a>
12<p id="display"></p>
13<div id="content" style="display: none">
14
15</div>
16<div id="rangetest">abcd<div id="picontainer1"><?pi efgh?></div><div>ijkl</div><div id="picontainer2"><?pi mnop?></div>qrst</div>
17<pre id="test">
18<script type="application/javascript">
19<![CDATA[
20
21/** Test for Bug 686449 **/
22
23var pi = document.createProcessingInstruction("t", "data");
24ok("target" in pi, "No target?");
25ok("data" in pi, "No data?");
26ok("length" in pi, "No length?");
27ok("substringData" in pi, "No substringData?");
28ok("appendData" in pi, "No appendData?");
29ok("insertData" in pi, "No insertData?");
30ok("deleteData" in pi, "No deleteData?");
31ok("replaceData" in pi, "No replaceData?");
32
33is(pi.substringData(0, pi.length), pi.data, "wrong data?");
34var olddata = pi.data;
35var appenddata = "foo"
36pi.appendData(appenddata);
37is(pi.data, olddata + appenddata, "appendData doesn't work?");
38pi.deleteData(olddata.length, appenddata.length);
39is(pi.data, olddata, "deleteData doesn't work?");
40pi.replaceData(0, 0, olddata);
41is(pi.data, olddata + olddata, "replaceData doesn't work?");
42pi.insertData(0, olddata);
43is(pi.data, olddata + olddata + olddata, "insertData doesn't work?");
44pi.data = olddata;
45is(pi.data, olddata, "setting data doesn't work?");
46
47var r = document.createRange();
48r.selectNodeContents(pi);
49is(r.startContainer, pi, "Wrong startContainer!");
50is(r.startOffset, 0, "Wrong startOffset!");
51is(r.endContainer, pi, "Wrong endContainer!");
52is(r.endOffset, pi.length, "Wrong endOffset!");
53
54var df = r.cloneContents();
55is(df.childNodes.length, 1, "Unexpected child nodes?");
56ok(df.firstChild.isEqualNode(pi), "Wrong cloning?");
57
58r.setStart(pi, 1);
59r.setEnd(pi, 3);
60df = r.cloneContents();
61is(df.childNodes.length, 1, "Unexpected child nodes?");
62ok(!df.firstChild.isEqualNode(pi), "Should clone to similar pi!");
63is(df.firstChild.data, "at", "Wrong data cloning?");
64
65r.selectNode(document.getElementById("rangetest"));
66is(r.toString(), document.getElementById("rangetest").textContent,
67   "Wrong range stringification!");
68ok(r.cloneContents().firstChild.firstChild.nextSibling.firstChild.
69     isEqualNode(document.getElementById("picontainer1").firstChild),
70   "Wrong pi cloning!");
71ok(r.cloneContents().firstChild.firstChild.nextSibling.nextSibling.nextSibling.firstChild.
72     isEqualNode(document.getElementById("picontainer2").firstChild),
73   "Wrong pi cloning!");
74
75]]>
76</script>
77</pre>
78</body>
79</html>
80