SuperX-Kernmodul
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

/*
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