dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
210 lines (205 loc) • 6.59 kB
HTML
<html>
<head>
<title>Test lifecycle</title>
<style type="text/css">
@import "../../../dojo/resources/dojo.css";
@import "../../../dijit/tests/css/dijitTests.css";
</style>
<script type="text/javascript" src="../../../dojo/dojo.js" data-dojo-config="isDebug: true, packageMap:[{name:'doh',location:'util/doh'}]"></script>
<script type="text/javascript">
require([
"doh/runner",
"dojo/ready",
"dojo/dom",
"dojox/gfx",
"dojox/gfx/shape",
"dojox/gfx/svg",
"dojox/gfx/canvas",
"dojox/gfx/registry"
],
function(doh, ready, dom, gfx, gfxshape, svg, canvas){
var drawing, r,
checkSurface = function(){
if(!drawing){
var dn = dom.byId("gfxObject");
drawing = gfx.createSurface(dn, 300, 300);
}
};
doh.register("GFX: shape lifecycle", [
{
name: "Shape.destroy",
timeout: 1000,
setUp: function(){
checkSurface();
r = drawing.createRect({
x: 100,
y: 100
}).setFill("black");
},
runTest: function(){
var uid = r.getUID();
r.removeShape();
r.destroy();
doh.assertTrue(!gfxshape.byId(uid), "Unexpected shape.byId return value.");
},
tearDown: function(){
drawing.clear();
}
},{
name: "Group.clear",
timeout: 1000,
setUp: function(){
checkSurface();
r = drawing.createGroup();
r.createRect({
x: 100,
y: 100
}).setFill("black");
},
runTest: function(){
var c = r.children[0];
r.clear(true);
doh.assertTrue(r.children.length == 0, "Unexpected children length on disposed group.");
doh.assertTrue(!gfxshape.byId(c.getUID()), "Unexpected shape.byId return value.");
}
},{
name: "Group.destroy",
timeout: 1000,
setUp: function(){
checkSurface();
r = drawing.createGroup();
r.createRect({
x: 100,
y: 100
}).setFill("black");
},
runTest: function(){
var uid = r.getUID();
var c = r.children[0];
r.removeShape();
r.destroy();
doh.assertTrue(!gfxshape.byId(uid), "Unexpected shape.byId return value.");
doh.assertTrue(r.children.length == 0, "Unexpected children length on disposed group.");
doh.assertTrue(!gfxshape.byId(r.getUID()), "Unexpected shape.byId return value.");
r = drawing.createGroup();
var t2 = r.createGroup();
c = t2.createRect();
r.removeShape();
r.destroy();
doh.assertTrue(!gfxshape.byId(r.getUID()), "Unexpected shape.byId return value.");
doh.assertTrue(r.children.length == 0, "Unexpected children length on disposed group.");
doh.assertTrue(!gfxshape.byId(t2.getUID()), "Unexpected shape.byId return value.");
doh.assertTrue(t2.children.length == 0, "Unexpected children length on disposed group.");
doh.assertTrue(!gfxshape.byId(c.getUID()), "Unexpected shape.byId return value.");
}
},{
name: "SVG-specific : shape clean-up",
timeout: 1000,
setUp: function(){
if(drawing){
drawing.destroy();
drawing = null;
}
gfx.switchTo(svg);
checkSurface();
var grad = {
type: "linear",
x1: 0, y1: 0,
x2: 600, y2: 0,
colors: [
{ offset: 0.2, color: "red" },
{ offset: 0.8, color: "yellow" }
]
};
r = drawing.createRect().setFill(grad).setClip({x:0,y:0,width:300,height:300});
},
runTest: function(){
var defs = drawing.defNode;
doh.assertTrue(defs.childNodes.length == 1, "Unexpected defs children count.");
var c = drawing.children[0];
c.removeShape();
c.destroy();
doh.assertTrue(defs.childNodes.length == 0, "Unexpected defs children count. Expected: 0.");
doh.assertTrue(drawing.rawNode.childNodes.length == 1 && drawing.rawNode.childNodes[0] == defs, "Unexpected surface children nodes.");
}
},{
name: "SVG-specific : Group clean-up",
timeout: 1000,
setUp: function(){
if(drawing){
drawing.destroy();
drawing = null;
}
gfx.switchTo(svg);
checkSurface();
var grad = {
type: "linear",
x1: 0, y1: 0,
x2: 600, y2: 0,
colors: [
{ offset: 0.2, color: "red" },
{ offset: 0.8, color: "yellow" }
]
};
var sub1 = drawing.createGroup();
for(var i=0; i<100; ++i){
var r = Math.floor(i/10), offs=4,
cc = r%2 == 0 ? -offs : offs,
x = (i%10)*60+cc, y = r*60+5, w = 50, h = 50;
sub1.createRect({x:x, y:y, width:w, height:h}).setFill(grad).setClip({cx:x+w/2, cy:y+w/2, rx:20, ry:20});
}
},
runTest: function(){
var defs = drawing.defNode;
doh.assertTrue(defs.childNodes.length == 100, "Unexpected defs children count.");
var g = drawing.children[0];
g.clear(true);
doh.assertTrue(defs.childNodes.length == 0, "Unexpected defs children count. Expected: 0.");
doh.assertTrue(g.rawNode.firstChild == null, "Unexpected group children count. Expected: 0.");
}
},{
name: "Canvas-specific : http://bugs.dojotoolkit.org/ticket/17077",
timeout: 1000,
setUp: function(){
if(drawing){
drawing.destroy();
drawing = null;
}
gfx.switchTo(canvas);
checkSurface();
var old = drawing._render, self = this;
drawing._render = function(){
try {
old.apply(this, arguments);
}catch(e){
self.d.errback(e);
return;
}
self.d && self.d.callback(true);
};
},
runTest: function(){
var g = drawing.createGroup();
var sg = drawing.createGroup();
sg.createRect();
// flush pending makeDirty()
drawing._render();
this.d = new doh.Deferred();
sg.removeShape();
drawing.destroy();
return this.d;
}
}
]);
ready(function(){
doh.run()
});
});
</script>
</head>
<body>
<div id="gfxObject" style="width: 500px; height: 500px;font-weight:bold;"></div>
</body>
</html>