diff options
Diffstat (limited to 'includes/js/dojo/tests/_base/NodeList.html')
-rw-r--r-- | includes/js/dojo/tests/_base/NodeList.html | 370 |
1 files changed, 370 insertions, 0 deletions
diff --git a/includes/js/dojo/tests/_base/NodeList.html b/includes/js/dojo/tests/_base/NodeList.html new file mode 100644 index 0000000..e3f08c5 --- /dev/null +++ b/includes/js/dojo/tests/_base/NodeList.html @@ -0,0 +1,370 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" + "http://www.w3.org/TR/html4/strict.dtd"> +<!-- + we use a strict-mode DTD to ensure that the box model is the same for these + basic tests +--> +<html> + <head> + <style type="text/css"> + @import "../../resources/dojo.css"; + html, body { + padding: 0px; + margin: 0px; + border: 0px; + } + + #sq100 { + background-color: black; + color: white; + position: absolute; + left: 100px; + top: 100px; + width: 100px; + height: 100px; + border: 0px; + padding: 0px; + margin: 0px; + overflow: hidden; + } + + </style> + <title>testing dojo.NodeList</title> + <script type="text/javascript" src="../../dojo.js" + djConfig="isDebug: true, noFirebugLite: true"></script> + <script type="text/javascript"> + dojo.require("doh.runner"); + dojo.addOnLoad(function(){ + var c = dojo.byId("c1"); + var t = dojo.byId("t"); + var s = dojo.byId("sq100"); + var fourElementNL = new dojo.NodeList(c, t, c, t); + doh.register("t", + [ + // constructor tests + function ctor(){ + var nl = new dojo.NodeList(); + nl.push(c); + doh.is(1, nl.length); + }, + function ctorArgs(){ + var nl = new dojo.NodeList(4); + nl.push(c); + doh.is(5, nl.length); + }, + function ctorArgs2(){ + var nl = new dojo.NodeList(c, t); + doh.is(2, nl.length); + doh.is(c, nl[0]); + doh.is(t, nl[1]); + }, + // iteration and array tests + function forEach(){ + var lastItem; + var nl = new dojo.NodeList(c, t); + nl.forEach(function(i){ lastItem = i; }); + doh.is(t, lastItem); + + var r = nl.forEach(function(i, idx, arr){ + doh.t(arr.constructor == dojo.NodeList); + doh.is(2, arr.length); + }); + doh.t(r.constructor == dojo.NodeList); + doh.is(r, nl); + }, + + function indexOf(){ + doh.is(0, fourElementNL.indexOf(c)); + doh.is(1, fourElementNL.indexOf(t)); + doh.is(-1, fourElementNL.indexOf(null)); + }, + + function lastIndexOf(){ + doh.is(2, fourElementNL.lastIndexOf(c)); + doh.is(3, fourElementNL.lastIndexOf(t)); + doh.is(-1, fourElementNL.lastIndexOf(null)); + }, + + function every(){ + var ctr = 0; + var ret = fourElementNL.every(function(){ + ctr++; + return true; + }); + doh.is(4, ctr); + doh.t(ret); + + ctr = 0; + var ret = fourElementNL.every(function(){ + ctr++; + return false; + }); + doh.is(1, ctr); + doh.f(ret); + }, + + function some(){ + var ret = fourElementNL.some(function(){ + return true; + }); + doh.t(ret); + + var ret = fourElementNL.some(function(i){ + return (i.id == "t"); + }); + doh.t(ret); + }, + + function map(){ + var ret = fourElementNL.map(function(){ + return true; + }); + + doh.is(ret, [true, true, true, true]); + var cnt = 0; + var ret = fourElementNL.map(function(){ + return cnt++; + }); + // doh.is(ret, [0, 1, 2, 3]); + + doh.t(ret.constructor == dojo.NodeList); + + // make sure that map() returns a NodeList + var sum = 0; + fourElementNL.map(function(){ return 2; }).forEach( function(x){ sum += x; } ); + doh.is(sum, 8); + }, + + function slice(){ + var pnl = new dojo.NodeList(t, t, c); + doh.is(2, pnl.slice(1).length); + doh.is(3, pnl.length); + doh.is(c, pnl.slice(-1)[0]); + doh.is(2, pnl.slice(-2).length); + }, + + function splice(){ + var pnl = new dojo.NodeList(t, t, c); + console.debug(pnl.splice(1)); + /* + doh.is(2, pnl.splice(1).length); + doh.is(1, pnl.length); + pnl = new dojo.NodeList(t, t, c); + doh.is(c, pnl.splice(-1)[0]); + doh.is(2, pnl.length); + pnl = new dojo.NodeList(t, t, c); + doh.is(2, pnl.splice(-2).length); + */ + }, + + function spliceInsert(){ + // insert 1 + var pnl = new dojo.NodeList(t, t, c); + pnl.splice(0, 0, c); + doh.is(4, pnl.length); + doh.is(c, pnl[0]); + + // insert multiple + pnl = new dojo.NodeList(t, t, c); + pnl.splice(0, 0, c, s); + doh.is(5, pnl.length); + doh.is(c, pnl[0]); + doh.is(s, pnl[1]); + doh.is(t, pnl[2]); + + // insert multiple at offset + pnl = new dojo.NodeList(t, t, c); + pnl.splice(1, 0, c, s); + doh.is(5, pnl.length); + doh.is(t, pnl[0]); + doh.is(c, pnl[1]); + doh.is(s, pnl[2]); + doh.is(t, pnl[3]); + }, + + function spliceDel(){ + // clobbery 1 + var pnl = new dojo.NodeList(c, t, s); + pnl.splice(0, 1); + doh.is(2, pnl.length); + doh.is(t, pnl[0]); + + // clobber multiple + pnl = new dojo.NodeList(c, t, s); + pnl.splice(0, 2); + doh.is(1, pnl.length); + doh.is(s, pnl[0]); + + // ...at an offset + pnl = new dojo.NodeList(c, t, s); + pnl.splice(1, 1); + doh.is(2, pnl.length); + doh.is(c, pnl[0]); + doh.is(s, pnl[1]); + + }, + + function spliceInsertDel(){ + // clobbery 1 + var pnl = new dojo.NodeList(c, t, s); + pnl.splice(1, 1, s); + doh.is(3, pnl.length); + doh.is(dojo.NodeList(c, s, s), pnl); + + pnl = new dojo.NodeList(c, t, s); + pnl.splice(1, 2, s); + doh.is(2, pnl.length); + doh.is(dojo.NodeList(c, s), pnl); + }, + + // sub-search + function query(){ + var pnl = new dojo.NodeList(t); + doh.is(c, pnl.query("span")[0]); + doh.is(t, dojo.query("body").query(":last-child")[0]); + doh.is(c, dojo.query("body").query(":last-child")[1]); + doh.is(1, pnl.query().length); + }, + + function filter(){ + doh.is(dojo.query("body :first-child").filter(":last-child")[0], c); + doh.is(1, dojo.query("*").filter(function(n){ return (n.nodeName.toLowerCase() == "span"); }).length); + + var filterObj = { + filterFunc: function(n){ + return (n.nodeName.toLowerCase() == "span"); + } + }; + doh.is(1, dojo.query("*").filter(filterObj.filterFunc).length); + doh.is(1, dojo.query("*").filter(filterObj.filterFunc, filterObj).length); + }, + + // layout DOM functions + function coords(){ + var tnl = new dojo.NodeList(dojo.byId('sq100')) + doh.t(dojo.isArray(tnl)); + doh.is(100, tnl.coords()[0].w); + doh.is(100, tnl.coords()[0].h); + doh.is(document.body.getElementsByTagName("*").length, dojo.query("body *").coords().length); + }, + + function styleGet(){ + // test getting + var tnl = new dojo.NodeList(s); + doh.is(1, tnl.style("opacity")[0]); + tnl.push(t); + dojo.style(t, "opacity", 0.5); + doh.is(0.5, tnl.style("opacity").slice(-1)[0]); + tnl.style("opacity", 1); + }, + + function styleSet(){ + // test setting + var tnl = new dojo.NodeList(s, t); + tnl.style("opacity", 0.5); + doh.is(0.5, dojo.style(tnl[0], "opacity")); + doh.is(0.5, dojo.style(tnl[1], "opacity")); + // reset + tnl.style("opacity", 1); + }, + + function style(){ + var tnl = new dojo.NodeList(s, t); + tnl.style("opacity", 1); + doh.is(1, tnl.style("opacity")[0]); + dojo.style(t, "opacity", 0.5); + doh.is(1.0, tnl.style("opacity")[0]); + doh.is(0.5, tnl.style("opacity")[1]); + // reset things + tnl.style("opacity", 1); + }, + + function concat(){ + var spans = dojo.query("span"); + var divs = dojo.query("div"); + console.debug(spans.concat(divs)); + doh.is(spans.concat(divs).constructor, dojo.NodeList); + doh.is((divs.length + spans.length), spans.concat(divs).length); + }, + + function concat2(t){ + var spans = dojo.query("span"); + var divs = dojo.query("div"); + doh.is(spans.concat([]).constructor, dojo.NodeList); + }, + + function place(t){ + var ih = "<div><span></span></div><span class='thud'><b>blah</b></span>"; + + var tn = document.createElement("div"); + tn.innerHTML = ih; + dojo.body().appendChild(tn); + var nl = dojo.query("b", tn).place(tn, "first"); + doh.t(nl.constructor == dojo.NodeList); + doh.is(1, nl.length); + doh.is("b", nl[0].nodeName.toLowerCase()); + doh.is(tn, nl[0].parentNode); + doh.is(tn.firstChild, nl[0]); + }, + + function orphan(t){ + var ih = "<div><span></span></div><span class='thud'><b>blah</b></span>"; + + var tn = document.createElement("div"); + tn.innerHTML = ih; + dojo.body().appendChild(tn); + var nl = dojo.query("span", tn).orphan(); + doh.t(nl.constructor == dojo.NodeList); + + doh.is(2, nl.length); + doh.is(1, tn.getElementsByTagName("*").length); + + tn.innerHTML = ih; + var nl = dojo.query("*", tn).orphan("b"); + doh.is(1, nl.length); + doh.is("blah", nl[0].innerHTML); + }, + + /* + // FIXME + function adopt(t){ + }, + + function addContent(t){ + }, + */ + + function connect(t){ + var ih = "<div><span></span></div><span class='thud'><button>blah</button></span>"; + + var tn = document.createElement("div"); + tn.innerHTML = ih; + dojo.body().appendChild(tn); + + var ctr = 0; + var nl = dojo.query("button", tn).connect("onclick", function(){ + ctr++; + }); + nl[0].click(); + doh.is(1, ctr); + nl[0].click(); + nl[0].click(); + doh.is(3, ctr); + } + ] + ); + doh.run(); + }); + </script> + </head> + <body> + <h1>testing dojo.NodeList</h1> + <div id="sq100"> + 100px square, abs + </div> + <div id="t"> + <span id="c1">c1</span> + </div> + </body> +</html> + |