Files
openlayers/master/examples/manager.html
Éric Lemoine 5d14b9e2d4 Updated
2013-02-20 10:38:25 +01:00

265 lines
6.6 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Dijit manager unit test</title>
<style type="text/css">
@import "../../themes/claro/document.css";
@import "../css/dijitTests.css";
</style>
<script type="text/javascript" src="../../../dojo/dojo.js"
data-dojo-config="isDebug: true"></script>
<script type="text/javascript" src="../_testCommon.js"></script>
<script type="text/javascript">
dojo.require("doh.runner");
dojo.require("dojo.parser");
dojo.require("dijit.dijit");
dojo.ready(function(){
dojo.declare("foo", dijit._Widget, {
name: "",
attr1: 0,
attr2: 0
});
dojo.declare("bar", dijit._Widget, {
name: "",
attr1: 0,
attr2: 0
});
dojo.declare("Baz", dijit._Widget, {
name: "",
attr1: 1,
attr2: 1
});
doh.register("parse", function(){
dojo.parser.parse();
});
doh.register("dijit._base.manager",
[
function forEachTest(t){
var names=[];
dijit.registry.forEach(function(widget){ names.push(widget.name); });
t.is(names.join(" "), "bob is your uncle");
},
function filterTest(t){
var names=[];
dijit.registry.
filter(function(widget){ return widget.attr1==10; }).
forEach(function(widget){ names.push(widget.name); });
t.is(names.join(" "), "bob uncle");
},
function filterScope(t){
// testing filter with a forced 'this' in the cb function
var names = [],
obj = {
check: function(widget, val){
// same as previous unit test
return widget.attr1 == val;
}
};
dijit.registry
.filter(function(w){ return this.check(w, 10); }, obj)
.forEach(function(w){ names.push(w.name) })
;
t.is(names.join(" "), "bob uncle");
},
function byId(t){
t.is(dijit.byId("three").name, "your");
t.f(dijit.byId("nonexistant"));
},
function byClass(t){
var names=[];
dijit.registry.
byClass("bar").
forEach(function(widget){ names.push(widget.name); });
t.is(names.join(" "), "your uncle");
},
function lengthTest(t){
// test existing length
t.is(dijit.registry.byClass("bar").length, 2);
// test adding:
var n = new Baz();
t.is(dijit.registry.byClass("Baz").length, 1);
// test destroying:
n.destroy();
t.is(dijit.registry.byClass("Baz").length, 0);
},
function nullLengthTest(t){
var ws = new dijit.WidgetSet();
var count = 0;
var b = [new Baz(), new Baz()];
ws.add(b[0]);
ws.add(b[1]);
t.is(2, ws.length);
ws.remove(b[0].id);
t.is(1, ws.length);
ws.remove(b[1].id);
t.is(0, ws.length);
// ensure we don't ever go below 0
ws.remove("invalidId");
t.is(0, ws.length);
dojo.forEach(b, function(w){ w.destroy() });
},
function forEachScope(t){
var obj = {
getIt: function(widget){
return widget.id;
}
};
dijit.registry.forEach(function(w){
t.is(w.id, this.getIt(w));
}, obj);
},
function forEachReturn(t){
// also tests WidgetSet.map
var ws = dijit.registry.forEach(function(){}).map(function(w){
return w.declaredClass.toUpperCase();
});
t.t(dojo.isArray(ws));
t.is(ws.length, dijit.registry.length);
},
function forEachInc(t){
var x = 0;
dijit.registry.forEach(function(w, i){
t.is(i, x++);
});
},
function toArrayTest(t){
var ws = dijit.registry.byClass("bar");
var wa = ws.toArray();
t.t(dojo.isArray(wa));
t.is(ws.length, wa.length);
var wda = dojo.map(wa, function(w){
return w.domNode;
});
t.is(wda.length, ws.length);
var wdas = wda.slice(-1);
t.is(1, wdas.length);
var w = dijit.byNode(wdas[0]);
t.is(w.declaredClass, "bar");
},
function mapTest(t){
var ids = dijit.registry.map(function(w){
return w.id;
});
t.is(ids.length, dijit.registry.length);
dijit.registry.forEach(function(id){
t.t(dijit.byId(id));
});
},
function everyTest(t){
var a = new Baz();
var b = new Baz();
var hasid = dijit.registry.every(function(w){
return w.id;
});
t.t(hasid);
var hasattr1 = dijit.registry.every(function(w){
return w.attr1 > 0;
});
t.t(hasattr1);
var x = 0;
var once = dijit.registry.every(function(w){
x++;
return false;
});
t.is(1, x);
t.f(once);
a.destroy();
b.destroy();
},
function someTest(t){
var a = new Baz();
var b = new Baz();
var x = 0;
var hasid = dijit.registry.some(function(w){
x++;
return w.id;
});
t.is(1, x);
t.t(hasid);
var n = 0;
var hasattr1 = dijit.registry.some(function(w){
n++;
return false;
});
t.is(n, dijit.registry.length);
t.f(hasattr1);
var l = 0;
var once = dijit.registry.some(function(w){
l++;
return true;
});
t.is(1, l);
t.t(once);
a.destroy();
b.destroy();
},
function deleteTest(t){
var names=[];
dijit.byId("two").destroy();
dijit.byId("four").destroy();
dijit.registry.forEach(function(widget){ names.push(widget.name); });
t.is(names.join(" "), "bob your");
},
function getEnclosingWidgetTest(t){
t.is(dijit.getEnclosingWidget(dojo.byId("not-a-widget")), null);
t.is(dijit.getEnclosingWidget(dojo.byId("three")).name, "your");
t.is(dijit.getEnclosingWidget(dojo.byId("three.one")).name, "your");
t.is(dijit.getEnclosingWidget(dojo.byId("three.one.one")).name, "your");
}
]
);
doh.run();
});
</script>
</head>
<body>
<h1>Dijit Manager Unit Test</h1>
<div id="one" data-dojo-type="foo" data-dojo-props='name:"bob", attr1:10, attr2:10'></div>
<div id="two" data-dojo-type="foo" data-dojo-props='name:"is", attr1:5, attr2:10'></div>
<div id="three" data-dojo-type="bar" data-dojo-props='name:"your", attr1:5, attr2:5'>
<div id="three.one">
<div id="three.one.one"></div>
</div>
</div>
<div id="four" data-dojo-type="bar" data-dojo-props='name:"uncle", attr1:10, attr2:5'></div>
<div id="not-a-widget"></div>
</body>
</html>