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.
122 lines
5.2 KiB
122 lines
5.2 KiB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
|
<html> |
|
<head> |
|
<title>Test text bbox</title> |
|
<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/_base/window", |
|
"dojox/gfx", |
|
"dojox/gfx/shape", |
|
"dojox/gfx/matrix"], |
|
function(doh, ready, win, gfx, gfxshape, matrix){ |
|
|
|
var textShape = { x:20, y:40, text:"Hello !"}; |
|
|
|
ready(function(){ |
|
var surface, r, |
|
checkSurface = function(){ |
|
if(!surface){ |
|
surface = gfx.createSurface("gfxObject", 300, 300); |
|
} |
|
}; |
|
|
|
doh.register("text.getBoundingBox", [ |
|
{ |
|
name: "text.getBoundingBox", |
|
timeout: 1000, |
|
setUp: function(){ |
|
if(surface){ |
|
surface.destroy(); |
|
surface = null; |
|
} |
|
checkSurface(); |
|
}, |
|
runTest: function(t){ |
|
var text = surface.createText(textShape).setFill("black"); |
|
var bbox = text.getBoundingBox(); |
|
t.assertTrue(bbox !== null, "Unexpected null bbox."); |
|
// it's impossible to test for bbox coordinates as it varies depending on the browser... |
|
}, |
|
tearDown: function(){ |
|
surface.clear(); |
|
} |
|
},{ |
|
name: "getBoundingBox (empty string)", |
|
timeout: 1000, |
|
setUp: function(){ |
|
if(surface){ |
|
surface.destroy(); |
|
surface = null; |
|
} |
|
checkSurface(); |
|
}, |
|
runTest: function(t){ |
|
var text = surface.createText().setFill("black"); |
|
var bbox = text.getBoundingBox(); |
|
t.assertTrue(bbox == null, "Unexpected non-null bbox."); |
|
}, |
|
tearDown: function(){ |
|
surface.clear(); |
|
} |
|
},{ |
|
name: "getBoundingBox (orphan)", |
|
timeout: 1000, |
|
setUp: function(){ |
|
if(surface){ |
|
surface.destroy(); |
|
surface = null; |
|
} |
|
checkSurface(); |
|
}, |
|
runTest: function(t){ |
|
var text = surface.createText(textShape).setFill("black"); |
|
text.removeShape(); |
|
var bbox = text.getBoundingBox(); |
|
t.assertTrue(bbox != null, "Unexpected bbox."); |
|
t.assertTrue(bbox.x==0 && bbox.y==0 && bbox.width==0 && bbox.height==0, "Unexpected non empty bbox."); |
|
var g = surface.createGroup(); |
|
text = g.createText(textShape); |
|
g.removeShape(); |
|
bbox = text.getBoundingBox(); |
|
t.assertTrue(bbox != null, "Unexpected bbox [2]."); |
|
t.assertTrue(bbox.x==0 && bbox.y==0 && bbox.width==0 && bbox.height==0, "Unexpected non empty bbox.[2]"); |
|
}, |
|
tearDown: function(){ |
|
surface.clear(); |
|
} |
|
},{ |
|
name: "_getTextBox", |
|
timeout: 1000, |
|
runTest: function(t){ |
|
var bbox = gfx._base._getTextBox(textShape.text); |
|
t.assertTrue(bbox !== null, "Unexpected null bbox."); |
|
// it's impossible to test for bbox coordinates as it varies depending on the browser... |
|
// but at least verify that it is a {l,t,w,h} object |
|
t.assertTrue("l" in bbox, "Not a bbox"); |
|
t.assertTrue("t" in bbox, "Not a bbox"); |
|
t.assertTrue("w" in bbox, "Not a bbox"); |
|
t.assertTrue("h" in bbox, "Not a bbox"); |
|
t.assertTrue(bbox.w > 0, "Not a bbox"); |
|
t.assertTrue(bbox.h > 0, "Not a bbox"); |
|
// and that the measuring node is invisible and empty after calling the function |
|
t.assertEqual("hidden", win.body().lastChild.style.visibility, |
|
"Document's last child should be invisible"); |
|
t.assertEqual("", win.body().lastChild.innerHTML, |
|
"Document's last child should be empty"); |
|
} |
|
} |
|
|
|
|
|
]); |
|
doh.run(); |
|
}); |
|
}); |
|
</script> |
|
</head> |
|
<body> |
|
<div id="gfxObject" style="width: 500px; height: 500px;font-weight:bold;"></div> |
|
</body> |
|
</html>
|
|
|