summaryrefslogtreecommitdiff
path: root/misc/openlayers/tests/Renderer/Elements.html
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openlayers/tests/Renderer/Elements.html')
-rw-r--r--misc/openlayers/tests/Renderer/Elements.html651
1 files changed, 0 insertions, 651 deletions
diff --git a/misc/openlayers/tests/Renderer/Elements.html b/misc/openlayers/tests/Renderer/Elements.html
deleted file mode 100644
index 53590e2..0000000
--- a/misc/openlayers/tests/Renderer/Elements.html
+++ /dev/null
@@ -1,651 +0,0 @@
-<html>
-<head>
-<script src="../OLLoader.js"></script>
- <script type="text/javascript">
-
- function setUp() {
- // Stub out functions that are meant to be overridden by
- // subclasses.
- OpenLayers.Renderer.Elements.prototype._createRenderRoot =
- OpenLayers.Renderer.Elements.prototype.createRenderRoot;
-
- var rendererRoot = document.createElement("div");
- OpenLayers.Renderer.Elements.prototype.createRenderRoot = function() {
- return rendererRoot;
- };
-
- OpenLayers.Renderer.Elements.prototype._createRoot =
- OpenLayers.Renderer.Elements.prototype.createRoot;
-
- OpenLayers.Renderer.Elements.prototype.createRoot = function() {
- return document.createElement("div");
- };
-
- OpenLayers.Renderer.Elements.prototype._createNode =
- OpenLayers.Renderer.Elements.prototype.createNode;
-
- OpenLayers.Renderer.Elements.prototype.createNode = function() {
- return document.createElement("div");
- };
- }
-
- // Create a new Elements renderer based on an id and an ordering
- // type. For these tests, both of these parameters are optional.
- function create_renderer(id, options) {
-
- rendererRoot = null;
-
- if (id == null) {
- var el = document.createElement('div');
- document.body.appendChild(el);
- el.id = OpenLayers.Util.createUniqueID();
- id = el.id;
- }
-
- return new OpenLayers.Renderer.Elements(id, options);
- }
-
- // Cleanup stubs made in the function above.
- function tearDown() {
- OpenLayers.Renderer.Elements.prototype.createRenderRoot =
- OpenLayers.Renderer.Elements.prototype._createRenderRoot;
- OpenLayers.Renderer.Elements.prototype.createRoot =
- OpenLayers.Renderer.Elements.prototype._createRoot;
- OpenLayers.Renderer.Elements.prototype.createNode =
- OpenLayers.Renderer.Elements.prototype._createNode;
- }
-
- function test_Elements_constructor(t) {
- t.plan(6);
-
- setUp();
-
- var r = create_renderer();
-
- t.ok(r instanceof OpenLayers.Renderer.Elements, "new OpenLayers.Renderer.Elements returns Elements object" );
- t.ok(r.rendererRoot != null, "elements rendererRoot is not null");
- t.ok(r.root != null, "elements root is not null");
- t.ok(r.indexer == null, "indexer is null if unused.");
-
- t.ok(r.root.parentNode == r.rendererRoot, "elements root is correctly appended to rendererRoot");
- t.ok(r.rendererRoot.parentNode == r.container, "elements rendererRoot is correctly appended to container");
-
- tearDown();
- }
-
- function test_Elements_destroy(t) {
- t.plan(5);
-
- var elems = {
- 'clear': function() {
- t.ok(true, "clear called");
- },
- 'rendererRoot': {},
- 'root': {},
- 'xmlns': {}
- };
-
- OpenLayers.Renderer.prototype._destroy =
- OpenLayers.Renderer.prototype.destroy;
-
- var args = [{}, {}, {}];
- OpenLayers.Renderer.prototype.destroy = function() {
- t.ok((arguments[0] == args[0]) &&
- (arguments[1] == args[1]) &&
- (arguments[2] == args[2]), "correct arguments passed to OpenLayers.Renderer.destroy()");
- };
-
- OpenLayers.Renderer.Elements.prototype.destroy.apply(elems, args);
-
- t.ok(elems.rendererRoot == null, "rendererRoot nullified");
- t.ok(elems.root == null, "root nullified");
- t.ok(elems.xmlns == null, "xmlns nullified");
-
- OpenLayers.Renderer.prototype.destroy =
- OpenLayers.Renderer.prototype._destroy;
-
- }
-
- function test_Elements_clear(t) {
- t.plan(2);
-
- setUp();
-
- var r = create_renderer();
- var element = document.createElement("div");
- r.root = element;
-
- var node = document.createElement("div");
- element.appendChild(node);
-
- r.clear();
-
- t.ok(r.vectorRoot.childNodes.length == 0, "vector root is correctly cleared");
- t.ok(r.textRoot.childNodes.length == 0, "text root is correctly cleared");
-
- tearDown();
- }
-
- function test_Elements_drawGeometry(t) {
- t.plan(7);
-
- setUp();
-
- var r = create_renderer();
-
- var element = document.createElement("div");
- r.vectorRoot = element;
-
- r.nodeFactory = function(id, type) {
- var element = document.createElement("div");
- return element;
- };
- var g_Node = null;
- var b_Node = null;
- r.drawGeometryNode = function(node, geometry, style) {
- g_Node = node;
- return {node: node, complete: true};
- };
- r.redrawBackgroundNode = function(id, geometry, style, featureId) {
- b_Node = r.nodeFactory();
- b_Node.id = "foo_background";
- element.appendChild(b_Node);
- };
-
- r.getNodeType = function(geometry, style) {
- return "div";
- };
- var geometry = {
- id: 'foo',
- CLASS_NAME: 'bar',
- getBounds: function() {return {bottom: 0}}
- };
- var style = {'backgroundGraphic': 'foo'};
- var featureId = 'dude';
- r.drawGeometry(geometry, style, featureId);
- t.ok(g_Node.parentNode == element, "node is correctly appended to root");
- t.ok(b_Node.parentNode == element, "redrawBackgroundNode appended background node");
- t.eq(g_Node._featureId, 'dude', "_featureId is correct");
- t.eq(g_Node._style.backgroundGraphic, "foo", "_style is correct");
- t.eq(g_Node._geometryClass, 'bar', "_geometryClass is correct");
-
- var returnNode = function(id) {
- return id == "foo_background" ? b_Node : g_Node;
- }
-
- var _getElement = document.getElementById;
- document.getElementById = returnNode;
- OpenLayers.Util.getElement = returnNode;
-
- style = {'display':'none'};
- r.drawGeometry(geometry, style, featureId);
- t.ok(g_Node.parentNode != element, "node is correctly removed");
- t.ok(b_Node.parentNode != element, "background node correctly removed")
-
- document.getElementById = _getElement;
-
- tearDown();
- }
-
- function test_Elements_drawGeometry_2(t) {
- t.plan(8);
-
- setUp();
-
- var geometry = {
- getBounds: function() {return {bottom: 0}}
- }
-
- var r = create_renderer();
-
- var element = document.createElement("div");
- r.root = element;
-
- r.nodeFactory = function(id, type) {
- var element = document.createElement("div");
- return element;
- };
- r.setStyle = function(node, style, options, geometry) {
- return node;
- };
-
- // point
- var properDraw = false;
- r.drawPoint = function(node, geometry) {
- properDraw = true;
- return {};
- };
- var point = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.Point'}, geometry);
- style = true;
- r.drawGeometry(point, style);
- t.ok(properDraw, "drawGeometry called drawPoint when passed a point");
-
- // line string
- var properDraw = false;
- r.drawLineString = function(g) {
- properDraw = true;
- return {};
- };
- var linestring = OpenLayers.Util.applyDefaults({id: "foo", CLASS_NAME: 'OpenLayers.Geometry.LineString'}, geometry);
- style = true;
- r.drawGeometry(linestring, style);
- t.ok(properDraw, "drawGeometry called drawLineString when passed a line string");
-
- // linear ring
- var properDraw = false;
- r.drawLinearRing = function(g) {
- properDraw = true;
- return {};
- };
- var linearring = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.LinearRing'}, geometry);
- style = true;
- r.drawGeometry(linearring, style);
- t.ok(properDraw, "drawGeometry called drawLinearRing when passed a linear ring");
-
- // polygon
- var properDraw = false;
- r.drawPolygon = function(g) {
- properDraw = true;
- return {};
- };
- var polygon = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.Polygon'}, geometry);
- style = true;
- r.drawGeometry(polygon, style);
- t.ok(properDraw, "drawGeometry called drawPolygon when passed a polygon");
-
- // rectangle
- var properDraw = false;
- r.drawRectangle = function(g) {
- properDraw = true;
- return {};
- };
- var rectangle = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.Rectangle'}, geometry);
- style = true;
- r.drawGeometry(rectangle, style);
- t.ok(properDraw, "drawGeometry called drawRectangle when passed a rectangle");
-
- // multi-point
- var properDraw = false;
- r.drawPoint = function(g) {
- properDraw = true;
- return {};
- };
- var multipoint = OpenLayers.Util.applyDefaults({
- CLASS_NAME: 'OpenLayers.Geometry.MultiPoint',
- components: [point]
- }, geometry);
- style = true;
- r.drawGeometry(multipoint, style);
- t.ok(properDraw, "drawGeometry called drawPoint when passed a multi-point");
-
- // multi-linestring
- var properDraw = false;
- r.drawLineString = function(g) {
- properDraw = true;
- return {};
- };
- var multilinestring = OpenLayers.Util.applyDefaults({
- CLASS_NAME: 'OpenLayers.Geometry.MultiLineString',
- components: [linestring]
- }, geometry);
- style = true;
- r.drawGeometry(multilinestring, style);
- t.ok(properDraw, "drawGeometry called drawLineString when passed a multi-linestring");
-
- // multi-polygon
- var properDraw = false;
- r.drawPolygon = function(g) {
- properDraw = true;
- return {};
- };
- var multipolygon = OpenLayers.Util.applyDefaults({
- CLASS_NAME: 'OpenLayers.Geometry.MultiPolygon',
- components: [polygon]
- }, geometry);
- style = true;
- r.drawGeometry(multipolygon, style);
- t.ok(properDraw, "drawGeometry called drawPolygon when passed a multi-polygon");
-
- tearDown();
- }
-
- function test_Elements_getfeatureidfromevent(t) {
- t.plan(2);
-
- var node = {
- _featureId: 'foo'
- };
- var event = {
- target: node
- };
-
- var id = OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent(event);
- t.eq(id, 'foo', "returned id is correct when event with target is passed");
-
- var event = {
- srcElement: node
- };
-
- var id = OpenLayers.Renderer.Elements.prototype.getFeatureIdFromEvent(event);
- t.eq(id, 'foo', "returned id is correct when event with srcElement is passed");
- }
-
- function test_Elements_erasegeometry(t) {
- t.plan(15);
-
- var elements = {
- 'eraseGeometry': function(geometry) {
- gErased.push(geometry);
- }
- };
-
- var geometry = {
- 'components': [{}, {}, {}]
- };
-
- //multipoint
- geometry.CLASS_NAME = "OpenLayers.Geometry.MultiPoint";
- gErased = [];
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- t.ok( (gErased[0] == geometry.components[0]) &&
- (gErased[1] == geometry.components[1]) &&
- (gErased[2] == geometry.components[2]), "multipoint all components of geometry correctly erased.");
-
- //multilinestring
- geometry.CLASS_NAME = "OpenLayers.Geometry.MultiLineString";
- gErased = [];
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- t.ok( (gErased[0] == geometry.components[0]) &&
- (gErased[1] == geometry.components[1]) &&
- (gErased[2] == geometry.components[2]), "multilinestring all components of geometry correctly erased.");
-
- //multipolygon
- geometry.CLASS_NAME = "OpenLayers.Geometry.MultiPolygon";
- gErased = [];
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- t.ok( (gErased[0] == geometry.components[0]) &&
- (gErased[1] == geometry.components[1]) &&
- (gErased[2] == geometry.components[2]), "multipolygon all components of geometry correctly erased.");
-
- //collection
- geometry.CLASS_NAME = "OpenLayers.Geometry.Collection";
- gErased = [];
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- t.ok( (gErased[0] == geometry.components[0]) &&
- (gErased[1] == geometry.components[1]) &&
- (gErased[2] == geometry.components[2]), "collection all components of geometry correctly erased.");
-
-
- // OTHERS
- //
- geometry.CLASS_NAME = {};
-
- gElement = null;
- gBackElement = null;
-
- OpenLayers.Util._getElement = OpenLayers.Util.getElement;
- OpenLayers.Util.getElement = function(id) {
- var retVal = null;
- if (id != null) {
- var hasBack = (id.indexOf(elements.BACKGROUND_ID_SUFFIX) != -1);
- retVal = hasBack ? gBackElement : gElement;
- }
- return retVal;
- };
-
- //element null
- geometry.id = null;
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- // (no tests here, just make sure it doesn't bomb)
-
- //element.parentNode null
- elements.BACKGROUND_ID_SUFFIX = 'BLAHBLAHBLAH';
- geometry.id = "foo";
- gElement = {};
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- // (no tests here, just make sure it doesn't bomb)
-
- //valid element.parentNode, element.geometry
- elements.indexer = {
- 'remove': function(elem) {
- gIndexerRemoved = elem;
- }
- };
-
- gElement = {
- 'geometry': {
- 'destroy': function() {
- t.ok(true, "geometry destroyed");
- }
- },
- 'parentNode': {
- 'removeChild': function(elem) {
- gElemRemoved = elem;
- }
- },
- '_style' : {backgroundGraphic: "foo"}
- };
- gBackElement = {
- 'parentNode': {
- 'removeChild': function(elem) {
- gBackRemoved = elem;
- }
- }
- };
-
- gElemRemoved = gBackRemoved = gIndexerRemoved = null;
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- t.ok( (gElement.geometry == null), "all normal: element's 'geometry' property nullified");
- t.ok( (gElemRemoved == gElement), "all normal: main element properly removed from parent node");
- t.ok( (gBackRemoved == gBackElement), "all normal: back element properly removed from parent node");
- t.ok( (gIndexerRemoved == gElement), "all normal: main element properly removed from the indexer");
-
- //valid element.parentNode, no element.geometry, no bElem
- gBackElement = null;
- gElement.geometry = null;
- gElemRemoved = gBackRemoved = gIndexerRemoved = null;
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- t.ok( (gElemRemoved == gElement), "no bElem: main element properly removed from parent node");
- t.ok( (gBackRemoved == null), "no bElem: back element not tried to remove from parent node when it doesn't exist");
- t.ok( (gIndexerRemoved == gElement), "no bElem: main element properly removed from the indexer");
-
- //valid element.parentNode, no element.geometry, valid bElem, no bElem.parentNode
- gBackElement = {};
- gElemRemoved = gBackRemoved = gIndexerRemoved = null;
- OpenLayers.Renderer.Elements.prototype.eraseGeometry.apply(elements, [geometry]);
- t.ok( (gElemRemoved == gElement), "no bElem.parentNode: main element properly removed from parent node");
- t.ok( (gBackRemoved == null), "no bElem.parentNode: back element not tried to remove from parent node when it has no parent node");
- t.ok( (gIndexerRemoved == gElement), "no bElem.parentNode: main element properly removed from the indexer");
-
-
- OpenLayers.Util.getElement = OpenLayers.Util._getElement;
- }
-
- function test_Elements_drawAndErase(t) {
- t.plan(20);
-
- setUp();
-
- var r = create_renderer(null, {zIndexing: true});
- var element = document.createElement("div");
- r.vectorRoot = element;
- document.body.appendChild(element);
-
- r.createNode = function(type, id) {
- var element = document.createElement("div");
- element.id = id;
- return element;
- };
- r.nodeTypeCompare = function() {return true};
- r.setStyle = function(node, style, options, geometry) {
- return node;
- };
-
- var geometry = {
- id: 'foo',
- CLASS_NAME: 'bar',
- getBounds: function() {return {bottom: 0}}
- };
- var style = {
- graphicZIndex: 10
- };
- var featureId = 'foo';
- r.drawGeometry(geometry, style, featureId);
-
- function count(obj) {
- var result = 0;
- for (var i in obj) {
- result++;
- }
- return result;
- }
-
- t.eq(element.childNodes.length, 1, "root is correctly filled");
- t.eq(r.indexer.maxZIndex, 10, "indexer.maxZIndex is correctly filled");
- t.eq(r.indexer.order.length, 1, "indexer.order is correctly filled");
- t.eq(count(r.indexer.indices), 1, "indexer.indices is correctly filled");
-
- r.eraseGeometry(geometry);
-
- t.eq(element.childNodes.length, 0, "root is correctly cleared");
- t.eq(r.indexer.maxZIndex, 0, "indexer.maxZIndex is correctly reset");
- t.eq(r.indexer.order.length, 0, "indexer.order is correctly reset");
- t.eq(count(r.indexer.indices), 0, "indexer.indices is correctly reset");
-
- delete(style.graphicZIndex);
- r.drawGeometry(geometry, style, featureId);
-
- t.eq(element.childNodes.length, 1, "root is correctly filled");
- t.eq(r.indexer.maxZIndex, 0, "indexer.maxZIndex is correctly filled");
- t.eq(r.indexer.order.length, 1, "indexer.order is correctly filled");
- t.eq(count(r.indexer.indices), 1, "indexer.indices is correctly filled");
-
- r.clear();
-
- t.eq(element.childNodes.length, 0, "root is correctly cleared");
- t.eq(r.indexer.maxZIndex, 0, "indexer.maxZIndex is correctly reset");
- t.eq(r.indexer.order.length, 0, "indexer.order is correctly reset");
- t.eq(count(r.indexer.indices), 0, "indexer.indices is correctly reset");
-
- style.graphicZIndex = 12;
- r.drawGeometry(geometry, style, featureId);
-
- t.eq(element.childNodes.length, 1, "root is correctly filled");
- t.eq(r.indexer.maxZIndex, 12, "indexer.maxZIndex is correctly filled");
- t.eq(r.indexer.order.length, 1, "indexer.order is correctly filled");
- t.eq(count(r.indexer.indices), 1, "indexer.indices is correctly filled");
-
- tearDown();
- }
-
- function test_Elements_moveRoot(t) {
- t.plan(2);
- setUp();
- var r1 = create_renderer();
- var r2 = create_renderer();
- r1.moveRoot(r2);
- t.xml_eq(r1.root.parentNode, r2.root.parentNode, "root moved successfully");
- r1.moveRoot(r1);
- t.xml_eq(r1.root.parentNode, r1.rendererRoot, "root moved back successfully");
- tearDown();
- }
-
- function test_Elements_drawGeometry_3(t) {
- t.plan(2);
-
- setUp();
-
- var r = create_renderer();
-
- var element = document.createElement("div");
- r.vectorRoot = element;
-
- r.nodeFactory = function(id, type) {
- return document.createElement("div");
- };
- var g_Node = null;
- var b_Node = null;
- r.drawGeometryNode = function(node, geometry, style) {
- g_Node = node;
- return {node: node, complete: true};
- };
- r.redrawBackgroundNode = function(id, geometry, style, featureId) {
- b_Node = r.nodeFactory();
- b_Node.id = "foo_background";
- element.appendChild(b_Node);
- };
-
- r.getNodeType = function(geometry, style) {
- return "div";
- };
- var geometry = {
- id: 'foo',
- CLASS_NAME: 'bar',
- getBounds: function() {return {bottom: 0}}
- };
- var style = {'backgroundGraphic': 'foo'};
- var featureId = 'dude';
- r.drawGeometry(geometry, style, featureId);
- t.ok(b_Node.parentNode == element, "redrawBackgroundNode appended background node");
-
- var returnNode = function(id) {
- return id == "foo_background" ? b_Node : g_Node;
- }
-
- var _getElement = document.getElementById;
- document.getElementById = returnNode;
- OpenLayers.Util.getElement = returnNode;
-
- style = {};
- r.drawGeometry(geometry, style, featureId);
- t.ok(b_Node.parentNode != element, "background node correctly removed")
-
- document.getElementById = _getElement;
-
- tearDown();
- }
-
- function test_setExtent(t) {
- t.plan(10);
- setUp();
- var resolution = 1;
- var r = create_renderer();
- r.map = {
- getMaxExtent: function() {
- return new OpenLayers.Bounds(-180,-90,180,90);
- },
- getExtent: function() {
- return r.extent;
- },
- getResolution: function() {
- return resolution;
- },
- baseLayer: {wrapDateLine: true}
- }
-
- r.setExtent(new OpenLayers.Bounds(179, -1, 182, 1), true);
- t.eq(r.rightOfDateLine, true, "on the right side of the dateline");
- t.eq(r.xOffset, r.map.getMaxExtent().getWidth(), "correct xOffset");
- r.setExtent(new OpenLayers.Bounds(179.5, -1, 182.5, 1), false);
- t.eq(r.rightOfDateLine, true, "still on the right side of the dateline");
- t.eq(r.xOffset, r.map.getMaxExtent().getWidth(), "still correct xOffset");
- resolution = 2;
- r.setExtent(new OpenLayers.Bounds(178, -2, 184, 2), true);
- t.eq(r.rightOfDateLine, true, "still on the right side of the dateline");
- t.eq(r.xOffset, r.map.getMaxExtent().getWidth() / resolution, "xOffset adjusted for new resolution");
- r.setExtent(new OpenLayers.Bounds(-184, -2, 178, 2), false);
- t.eq(r.rightOfDateLine, false, "on the left side of the dateline");
- t.eq(r.xOffset, 0, "no xOffset");
- r.setExtent(new OpenLayers.Bounds(178, -2, 184, 2), true);
- t.eq(r.rightOfDateLine, true, "back on the right side of the dateline");
- t.eq(r.xOffset, r.map.getMaxExtent().getWidth() / resolution, "correct xOffset");
-
- tearDown();
- }
-
- </script>
-</head>
-<body>
-<div id="map" style="width:500px;height:550px"></div>
-</body>
-</html>