3 <script src="../../lib/OpenLayers.js"></script>
4 <script type="text/javascript">
6 var geometry = null, node = null;
8 function test_VML_constructor(t) {
9 if (!OpenLayers.Renderer.VML.prototype.supported()) {
15 var r = new OpenLayers.Renderer.VML(document.body);
16 t.ok(r instanceof OpenLayers.Renderer.VML, "new OpenLayers.Renderer.VML returns VML object" );
19 function test_VML_destroy(t) {
20 if (!OpenLayers.Renderer.VML.prototype.supported()) {
27 var g_Destroy = false;
29 OpenLayers.Renderer.Elements.prototype._destroy =
30 OpenLayers.Renderer.Elements.prototype.destroy;
32 OpenLayers.Renderer.prototype.destroy = function() {
36 var r = new OpenLayers.Renderer.VML(document.body);
39 t.eq(g_Destroy, true, "OpenLayers.Renderer.Elements.destroy() called");
41 OpenLayers.Renderer.prototype.destroy =
42 OpenLayers.Renderer.prototype._destroy;
45 function test_VML_setextent(t) {
46 if (!OpenLayers.Renderer.VML.prototype.supported()) {
53 OpenLayers.Renderer.Elements.prototype._setExtent =
54 OpenLayers.Renderer.Elements.prototype.setExtent;
56 var g_SetExtent = false;
57 OpenLayers.Renderer.Elements.prototype.setExtent = function() {
61 var r = new OpenLayers.Renderer.VML(document.body);
62 r.setSize(new OpenLayers.Size(4,4));
64 getResolution: function() {
69 var extent = new OpenLayers.Bounds(1,2,3,4);
72 t.eq(g_SetExtent, true, "Elements.setExtent() called");
74 t.ok(r.root.coordorigin == "2,4", "coordorigin is correct");
75 t.ok(r.root.coordsize == "4,4", "coordsize is correct");
77 OpenLayers.Renderer.Elements.prototype.setExtent =
78 OpenLayers.Renderer.Elements.prototype._setExtent;
81 function test_VML_setsize(t) {
82 if (!OpenLayers.Renderer.VML.prototype.supported()) {
89 var r = new OpenLayers.Renderer.VML(document.body);
91 var size = new OpenLayers.Size(1,2);
93 t.eq(r.rendererRoot.style.width, "1px", "rendererRoot width is correct");
94 t.eq(r.rendererRoot.style.height, "2px", "rendererRoot height is correct");
96 t.eq(r.root.style.width, "1px", "root width is correct");
97 t.eq(r.root.style.height, "2px", "root height is correct");
100 function test_VML_drawpoint(t) {
101 if (!OpenLayers.Renderer.VML.prototype.supported()) {
108 var r = new OpenLayers.Renderer.VML(document.body);
110 var properDraw = false;
112 r.drawCircle = function(n, g, r) {
118 t.ok(properDraw && g_Radius == 1, "drawPoint called drawCircle with radius set to 1");
121 function test_VML_drawcircle(t) {
122 if (!OpenLayers.Renderer.VML.prototype.supported()) {
129 var r = new OpenLayers.Renderer.VML(document.body);
132 var node = document.createElement('div');
140 r.drawCircle(node, geometry, radius);
142 t.eq(node.style.left, '-1px', "left is correct");
143 t.eq(node.style.top, '1px', "top is correct");
144 t.eq(node.style.width, (2 * radius) + "px", "width is correct");
145 t.eq(node.style.height, (2 * radius) + "px", "height is correct");
148 function test_VML_drawGraphic(t) {
149 if (!OpenLayers.Renderer.VML.prototype.supported()) {
156 var r = new OpenLayers.Renderer.VML(document.body);
159 var node = document.createElement('div');
161 node._geometryClass = "OpenLayers.Geometry.Point";
169 externalGraphic: "foo.png",
174 r.drawGeometryNode(node, geometry, style);
176 t.eq(node.childNodes[0].id, "test_fill", "fill child node correctly created");
177 t.eq(node.style.left, "-3px", "x of insertion point with calculated xOffset correct");
178 t.eq(node.style.top, "-3px", "y of insertion point with calculated yOffset correct");
182 r.drawGeometryNode(node, geometry, style);
184 t.eq(node.childNodes[1].id, "test_image", "image child node correctly created");
185 t.eq(node.style.left, "-4px", "x of insertion point of rotated image correct");
186 t.eq(node.style.top, "-4px", "y of insertion point of rotated image correct");
189 function test_VML_drawlinestring(t) {
190 if (!OpenLayers.Renderer.VML.prototype.supported()) {
197 var r = new OpenLayers.Renderer.VML(document.body);
200 r.drawLine = function(c) {
204 r.drawLineString(node, geometry);
206 t.ok(g_DrawLine, "drawLine is called");
209 function test_VML_drawlinearring(t) {
210 if (!OpenLayers.Renderer.VML.prototype.supported()) {
217 var r = new OpenLayers.Renderer.VML(document.body);
220 r.drawLine = function(c) {
224 r.drawLinearRing(node, geometry);
226 t.ok(g_DrawLine, "drawLine is called");
229 function test_VML_drawline(t) {
230 if (!OpenLayers.Renderer.VML.prototype.supported()) {
237 var r = new OpenLayers.Renderer.VML(document.body);
240 var node = document.createElement('div');
250 getBounds: function() {
251 return new OpenLayers.Bounds(5,6,7,8);
255 r.drawLine(node, geometry, true);
256 t.ok(node.path.indexOf("x") != -1, "path attribute is correct when passed closeLine = true");
259 r.drawLine(node, geometry, false);
260 t.eq(node.path, "m 2,4 l 6,8 l e", "path attribute is correct");
261 t.eq(node.style.left, "10px", "node.style.left is correct");
262 t.eq(node.style.top, "16px", "node.style.top is correct");
263 t.eq(node.style.width, "4px", "node.style.width is correct");
264 t.eq(node.style.height, "4px", "node.style.height is correct");
265 t.eq(node.coordorigin, "10 16", "node.coordorigin is correct");
266 t.eq(node.coordsize, "4 4", "node.coordsize is correct");
269 function test_VML_drawpolygon(t) {
270 if (!OpenLayers.Renderer.VML.prototype.supported()) {
277 var r = new OpenLayers.Renderer.VML(document.body);
280 g_SetNodeDimension = false;
281 r.setNodeDimension = function(){
282 g_SetNodeDimension = true;
285 var node = document.createElement('div');
306 components: [linearRing, linearRing2]
308 r.drawPolygon(node, geometry, true);
309 t.ok(g_SetNodeDimension, "setNodeDimension is called");
310 t.eq(node.path, "m 2,4 l 6,8 x m 10,12 l 14,16 x e", "path attribute is correct");
313 function test_VML_drawrectangle(t) {
314 if (!OpenLayers.Renderer.VML.prototype.supported()) {
321 var r = new OpenLayers.Renderer.VML(document.body);
324 var node = document.createElement('div');
333 r.drawRectangle(node, geometry);
335 t.eq(node.style.left, "2px", "node.style.left is correct");
336 t.eq(node.style.top, "4px", "node.style.top is correct");
337 t.eq(node.style.width, "6px", "node.style.width is correct");
338 t.eq(node.style.height, "8px", "node.style.height is correct");
341 function test_vml_getnodetype(t) {
342 if (!OpenLayers.Renderer.VML.prototype.supported()) {
349 var r = new OpenLayers.Renderer.VML(document.body);
351 var g = {CLASS_NAME: "OpenLayers.Geometry.Point"}
352 var s = {graphicName: "square"};
354 t.eq(r.getNodeType(g, s), "olv:shape", "Correct node type for well known symbols");
357 function test_vml_importsymbol(t) {
358 if (!OpenLayers.Renderer.VML.prototype.supported()) {
365 var r = new OpenLayers.Renderer.VML(document.body);
367 var cache = r.importSymbol("square");
369 t.eq(cache.path, "m 0 0 l 0 1 1 1 1 0 0 0 x e", "Square symbol rendered correctly");
370 t.ok(r.symbolCache["-square"], "Symbol has been cached correctly.");
374 function test_vml_dashstyle(t) {
375 if (!OpenLayers.Renderer.VML.prototype.supported()) {
382 var r = new OpenLayers.Renderer.VML(document.body);
384 t.eq(r.dashStyle({strokeDashstyle: "1 4"}), "dot", "dot pattern recognized correctly.");
385 t.eq(r.dashStyle({strokeDashstyle: "4 4"}), "dash", "dash pattern recognized correctly.");
386 t.eq(r.dashStyle({strokeDashstyle: "8 4"}), "longdash", "longdash pattern recognized correctly.");
387 t.eq(r.dashStyle({strokeDashstyle: "4 4 1 4"}), "dashdot", "dashdot pattern recognized correctly.");
388 t.eq(r.dashStyle({strokeDashstyle: "8 4 1 4"}), "longdashdot", "longdashdot pattern recognized correctly.");
391 function test_vml_moveRoot(t) {
392 if (!OpenLayers.Renderer.VML.prototype.supported()) {
398 var map = new OpenLayers.Map("map");
399 var l1 = new OpenLayers.Layer.Vector("vector");
401 var l2 = new OpenLayers.Layer.Vector.RootContainer("rootcontainer", {layers: [l1]});
403 var clear = l1.renderer.clear;
404 l1.renderer.clear = function() {
405 // this should be called twice, once when l2 is added to the map,
406 // and once when removed from the map.
407 t.ok(true, "Clearing original layer");
411 l1.renderer.clear = clear;
419 <div id="map" style="width:500px;height:550px"></div>