Blame | Last modification | View Log | RSS feed
<!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 thesebasic 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 testsfunction 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 testsfunction 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 NodeListvar 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 1var pnl = new dojo.NodeList(t, t, c);pnl.splice(0, 0, c);doh.is(4, pnl.length);doh.is(c, pnl[0]);// insert multiplepnl = 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 offsetpnl = 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 1var pnl = new dojo.NodeList(c, t, s);pnl.splice(0, 1);doh.is(2, pnl.length);doh.is(t, pnl[0]);// clobber multiplepnl = new dojo.NodeList(c, t, s);pnl.splice(0, 2);doh.is(1, pnl.length);doh.is(s, pnl[0]);// ...at an offsetpnl = 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 1var 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-searchfunction 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 functionsfunction 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 gettingvar 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 settingvar 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"));// resettnl.style("opacity", 1);},function styles(){var tnl = new dojo.NodeList(s, t);tnl.styles("opacity", 1);doh.is(1, tnl.styles("opacity")[0]);dojo.style(t, "opacity", 0.5);doh.is(1.0, tnl.styles("opacity")[0]);doh.is(0.5, tnl.styles("opacity")[1]);// reset thingstnl.styles("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);},/*// FIXMEfunction 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>