You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
7.0 KiB
200 lines
7.0 KiB
2 years ago
|
/*
|
||
|
Copyright (c) 2004-2006, The Dojo Foundation
|
||
|
All Rights Reserved.
|
||
|
|
||
|
Licensed under the Academic Free License version 2.1 or above OR the
|
||
|
modified BSD license. For more information on Dojo licensing, see:
|
||
|
|
||
|
http://dojotoolkit.org/community/licensing.shtml
|
||
|
*/
|
||
|
|
||
|
dojo.require("dojo.dom");
|
||
|
|
||
|
function test_dom_sanityCheck(){
|
||
|
var td = document.createElement("div");
|
||
|
td.appendChild(document.createTextNode("foo"));
|
||
|
td.appendChild(document.createCDATASection("bar"));
|
||
|
var td2 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
jum.assertEquals("test1", 3, td.childNodes.length);
|
||
|
}
|
||
|
|
||
|
function test_dom_getUniqueId(){
|
||
|
var td = document.createElement("div");
|
||
|
td.setAttribute("id", "dj_unique_1");
|
||
|
document.body.appendChild(td);
|
||
|
jum.assertEquals("test40", "dj_unique_2", dojo.dom.getUniqueId());
|
||
|
}
|
||
|
|
||
|
function test_dom_getFirstChildElement(){
|
||
|
var td = document.createElement("div");
|
||
|
td.appendChild(document.createTextNode("foo"));
|
||
|
td.appendChild(document.createCDATASection("bar"));
|
||
|
var td2 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
jum.assertTrue("test50", dojo.dom.getFirstChildElement(td) === td2);
|
||
|
}
|
||
|
|
||
|
function test_dom_getLastChildElement(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
td.appendChild(document.createTextNode("foo"));
|
||
|
td.appendChild(document.createCDATASection("bar"));
|
||
|
jum.assertTrue("test60", dojo.dom.getLastChildElement(td) === td2);
|
||
|
}
|
||
|
|
||
|
function test_dom_getNextSiblingElement(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
td.appendChild(document.createTextNode("foo"));
|
||
|
var td3 = document.createElement("div");
|
||
|
td.appendChild(td3);
|
||
|
td.appendChild(document.createCDATASection("bar"));
|
||
|
jum.assertTrue("test70", dojo.dom.getNextSiblingElement(td2) === td3);
|
||
|
jum.assertTrue("test71", dojo.dom.nextElement(td2) === td3);
|
||
|
jum.assertTrue("test80", dojo.dom.getNextSiblingElement(td3) === null);
|
||
|
jum.assertTrue("test81", dojo.dom.nextElement(td3) === null);
|
||
|
}
|
||
|
|
||
|
function test_dom_getPreviousSiblingElement(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
td.appendChild(document.createTextNode("foo"));
|
||
|
var td3 = document.createElement("div");
|
||
|
td.appendChild(td3);
|
||
|
td.appendChild(document.createCDATASection("bar"));
|
||
|
jum.assertTrue("test90", dojo.dom.getPreviousSiblingElement(td3) === td2);
|
||
|
jum.assertTrue("test91", dojo.dom.prevElement(td3) === td2);
|
||
|
jum.assertTrue("test100", dojo.dom.getPreviousSiblingElement(td2) === null);
|
||
|
jum.assertTrue("test101", dojo.dom.prevElement(td2) === null);
|
||
|
}
|
||
|
|
||
|
function test_dom_moveChildrenNoTrim(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
var td3 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
td.appendChild(document.createTextNode("foo"));
|
||
|
td.appendChild(td3);
|
||
|
td.appendChild(document.createCDATASection("bar"));
|
||
|
var ts = document.createElement("span");
|
||
|
var moved = dojo.dom.moveChildren(td, ts, false);
|
||
|
jum.assertEquals("test110", 4, moved);
|
||
|
jum.assertEquals("test120", 4, ts.childNodes.length);
|
||
|
jum.assertEquals("test130", 0, td.childNodes.length);
|
||
|
jum.assertFalse("test140", td.hasChildNodes());
|
||
|
}
|
||
|
|
||
|
function test_dom_moveChildrenWithTrim(){
|
||
|
// FIXME: this method is very weird. It only seems to trim text nodes and
|
||
|
// not CDATA sections or other non-printing node types, but I'm not sure if
|
||
|
// it's a bug in the method or my understanding of it
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
var td3 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
td.appendChild(document.createTextNode("foo"));
|
||
|
td.appendChild(td3);
|
||
|
td.appendChild(document.createCDATASection("bar"));
|
||
|
td.appendChild(document.createTextNode("baz"));
|
||
|
var ts = document.createElement("span");
|
||
|
var moved = dojo.dom.moveChildren(td, ts, true);
|
||
|
jum.assertEquals("test150", 4, moved);
|
||
|
jum.assertEquals("test160", 4, ts.childNodes.length);
|
||
|
jum.assertEquals("test170", 0, td.childNodes.length);
|
||
|
jum.assertFalse("test180", td.hasChildNodes());
|
||
|
}
|
||
|
|
||
|
function test_dom_copyChildren(){
|
||
|
// FIXME: we can't test this now since JsFakeDom doesn't have an
|
||
|
// implementation of cloneNode()
|
||
|
}
|
||
|
|
||
|
function test_dom_removeChildren(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
var td3 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
td.appendChild(document.createTextNode("foo"));
|
||
|
td.appendChild(td3);
|
||
|
td.appendChild(document.createCDATASection("bar"));
|
||
|
td.appendChild(document.createTextNode("baz"));
|
||
|
var count = dojo.dom.removeChildren(td);
|
||
|
jum.assertEquals("test190", 5, count);
|
||
|
jum.assertEquals("test200", 0, td.childNodes.length);
|
||
|
jum.assertFalse("test210", td.hasChildNodes());
|
||
|
}
|
||
|
|
||
|
function test_dom_replaceChildren(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
td.appendChild(td2);
|
||
|
var nc = document.createTextNode("foo")
|
||
|
dojo.dom.replaceChildren(td, nc);
|
||
|
jum.assertEquals("test220", 1, td.childNodes.length);
|
||
|
jum.assertTrue("test230", td.hasChildNodes());
|
||
|
jum.assertTrue("test240", td.firstChild === nc);
|
||
|
}
|
||
|
|
||
|
function test_dom_removeNode(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
dojo.dom.removeChildren(document.body);
|
||
|
jum.assertFalse("test250", document.body.hasChildNodes());
|
||
|
document.body.appendChild(td2);
|
||
|
jum.assertTrue("test260", document.body.hasChildNodes());
|
||
|
var r1 = dojo.dom.removeNode(td);
|
||
|
jum.assertTrue("test270", r1 == null);
|
||
|
var r2 = dojo.dom.removeNode(td2);
|
||
|
jum.assertTrue("test280", r2 === td2);
|
||
|
jum.assertFalse("test290", document.body.hasChildNodes());
|
||
|
}
|
||
|
|
||
|
function test_dom_getAncestors(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
document.body.appendChild(td);
|
||
|
td.appendChild(td2);
|
||
|
var t2a = dojo.dom.getAncestors(td2);
|
||
|
jum.assertTrue("test300", t2a[0] === td2);
|
||
|
jum.assertTrue("test310", t2a[1] === td);
|
||
|
jum.assertTrue("test320", t2a[2] === document.body);
|
||
|
document.body.appendChild(td2);
|
||
|
t2a = dojo.dom.getAncestors(td2);
|
||
|
jum.assertTrue("test330", t2a[0] === td2);
|
||
|
jum.assertTrue("test340", t2a[1] === document.body);
|
||
|
}
|
||
|
|
||
|
function test_dom_isDescendantOf(){
|
||
|
var td = document.createElement("div");
|
||
|
var td2 = document.createElement("div");
|
||
|
document.body.appendChild(td);
|
||
|
td.appendChild(td2);
|
||
|
jum.assertTrue("test350", dojo.dom.isDescendantOf(td2, td));
|
||
|
jum.assertTrue("test360", dojo.dom.isDescendantOf(td2, document.body));
|
||
|
jum.assertTrue("test370", dojo.dom.isDescendantOf(td2, td2));
|
||
|
jum.assertFalse("test380", dojo.dom.isDescendantOf(td2, td2, true));
|
||
|
}
|
||
|
|
||
|
function test_dom_innerXML(){
|
||
|
// FIXME: we can't test this since there's no XMLSerializer instance in
|
||
|
// JsFakeDom...
|
||
|
}
|
||
|
|
||
|
function test_dom_createDocumentFromText(){
|
||
|
// FIXME: ...same goes for DOMParser
|
||
|
}
|
||
|
|
||
|
|
||
|
// FIXME:
|
||
|
// still need to add tests for:
|
||
|
// * insertBefore
|
||
|
// * insertAfter
|
||
|
// * insertAtPosition
|
||
|
// * insertAtIndex
|
||
|
// * textContent
|
||
|
// * collectionToArray
|