Revert r6710: The new popup coe is going to need to change tests, so this
needs to wait. git-svn-id: http://svn.openlayers.org/trunk/openlayers@6711 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
466
tests/test_Layer.html
Normal file
466
tests/test_Layer.html
Normal file
@@ -0,0 +1,466 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="../lib/OpenLayers.js"></script>
|
||||
<script type="text/javascript">
|
||||
var layer;
|
||||
|
||||
function test_01_Layer_constructor (t) {
|
||||
t.plan( 15 );
|
||||
|
||||
var options = { chicken: 151, foo: "bar", projection: "none" };
|
||||
var layer = new OpenLayers.Layer('Test Layer', options);
|
||||
|
||||
t.ok( layer instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
|
||||
t.eq( layer.CLASS_NAME, "OpenLayers.Layer", "CLASS_NAME variable set correctly");
|
||||
|
||||
t.eq( layer.name, "Test Layer", "layer.name is correct" );
|
||||
t.ok( layer.id != null, "Layer is given an id");
|
||||
t.ok( layer.projection, "none", "default layer projection correctly set");
|
||||
t.ok( ((layer.chicken == 151) && (layer.foo == "bar")), "layer.options correctly set to Layer Object" );
|
||||
t.ok( ((layer.options["chicken"] == 151) && (layer.options["foo"] == "bar")), "layer.options correctly backed up" );
|
||||
|
||||
t.ok( typeof layer.div == "object" , "layer.div is created" );
|
||||
t.eq( layer.div.id, layer.id, "layer.div.id is correct" );
|
||||
|
||||
options.chicken = 552;
|
||||
|
||||
t.eq( layer.options["chicken"], 151 , "layer.options correctly made fresh copy" );
|
||||
|
||||
t.eq( layer.isBaseLayer, false, "Default layer is not base layer" );
|
||||
|
||||
layer = new OpenLayers.Layer('Test Layer');
|
||||
t.ok( layer instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
|
||||
t.eq( layer.name, "Test Layer", "layer.name is correct" );
|
||||
t.ok( layer.projection == null, "default layer projection correctly set");
|
||||
t.ok( layer.options instanceof Object, "layer.options correctly initialized as a non-null Object" );
|
||||
}
|
||||
|
||||
function test_02_Layer_clone (t) {
|
||||
t.plan( 8 );
|
||||
|
||||
var mapone = new OpenLayers.Map('map');
|
||||
var options = { chicken: 151, foo: "bar", maxResolution: "auto" };
|
||||
var layer = new OpenLayers.Layer('Test Layer', options);
|
||||
mapone.addLayer(layer);
|
||||
|
||||
// randomly assigned property
|
||||
layer.chocolate = 5;
|
||||
|
||||
var clone = layer.clone();
|
||||
|
||||
t.ok( clone.map == null, "cloned layer has map property set to null")
|
||||
|
||||
var maptwo = new OpenLayers.Map('map2');
|
||||
maptwo.addLayer(clone);
|
||||
|
||||
t.ok( clone instanceof OpenLayers.Layer, "new OpenLayers.Layer returns object" );
|
||||
t.eq( clone.name, "Test Layer", "default clone.name is correct" );
|
||||
t.ok( ((clone.options["chicken"] == 151) && (clone.options["foo"] == "bar")), "clone.options correctly set" );
|
||||
t.eq(clone.chocolate, 5, "correctly copied randomly assigned property");
|
||||
|
||||
layer.addOptions({chicken:152});
|
||||
t.eq(clone.options["chicken"], 151, "made a clean copy of options");
|
||||
|
||||
t.ok( (layer.maxResolution != clone.maxResolution), "maxresolution of clone reset to new map div");
|
||||
t.ok( (layer.minResolution != clone.minResolution), "minresolution of clone reset to new map div");
|
||||
|
||||
mapone.destroy();
|
||||
maptwo.destroy();
|
||||
}
|
||||
|
||||
function test_03_Layer_setName (t) {
|
||||
|
||||
t.plan( 1 );
|
||||
|
||||
layer = new OpenLayers.Layer('Test Layer');
|
||||
layer.setName("chicken");
|
||||
|
||||
t.eq(layer.name, "chicken", "setName() works")
|
||||
|
||||
}
|
||||
|
||||
function test_04_Layer_addOptions (t) {
|
||||
|
||||
t.plan( 4 );
|
||||
|
||||
var options = { chicken: 151, foo: "bar" };
|
||||
var layer = new OpenLayers.Layer('Test Layer', options);
|
||||
|
||||
layer.addOptions({bark:55, chicken: 171});
|
||||
|
||||
t.eq(layer.bark, 55, "addOptions() assigns new option correctly to Layer");
|
||||
t.eq(layer.options.bark, 55, "addOptions() adds new option correctly to backup");
|
||||
|
||||
t.eq(layer.chicken, 171, "addOptions() overwrites option correctly to Layer");
|
||||
t.eq(layer.options.chicken, 171, "addOptions() overwrites option correctly to backup");
|
||||
|
||||
}
|
||||
|
||||
function test_04_Layer_StandardOptionsAccessors (t) {
|
||||
|
||||
t.plan( 4 );
|
||||
|
||||
var projection = "chicken";
|
||||
var maxExtent = new OpenLayers.Bounds(50,50,100,100);
|
||||
var maxResolution = 1.5726;
|
||||
var numZoomLevels = 11;
|
||||
|
||||
var options = { projection: projection,
|
||||
maxExtent: maxExtent,
|
||||
maxResolution: maxResolution,
|
||||
numZoomLevels: numZoomLevels
|
||||
};
|
||||
|
||||
var layer = new OpenLayers.Layer('Test Layer', options);
|
||||
|
||||
t.eq(layer.projection, projection, "projection set correctly");
|
||||
t.ok(layer.maxExtent.equals(maxExtent), "maxExtent set correctly");
|
||||
t.eq(layer.maxResolution, maxResolution, "maxResolution set correctly");
|
||||
t.eq(layer.numZoomLevels, numZoomLevels, "numZoomLevels set correctly");
|
||||
}
|
||||
|
||||
function test_eventListeners(t) {
|
||||
t.plan(1);
|
||||
|
||||
var method = OpenLayers.Events.prototype.on;
|
||||
// test that events.on is called at layer construction
|
||||
var options = {
|
||||
eventListeners: {foo: "bar"}
|
||||
};
|
||||
OpenLayers.Events.prototype.on = function(obj) {
|
||||
t.eq(obj, options.eventListeners, "events.on called with eventListeners");
|
||||
}
|
||||
var layer = new OpenLayers.Layer("test", options);
|
||||
OpenLayers.Events.prototype.on = method;
|
||||
layer.destroy();
|
||||
|
||||
// if events.on is called again, this will fail due to an extra test
|
||||
// test layer without eventListeners
|
||||
OpenLayers.Events.prototype.on = function(obj) {
|
||||
t.fail("events.on called without eventListeners");
|
||||
}
|
||||
var layer2 = new OpenLayers.Layer("test");
|
||||
OpenLayers.Events.prototype.on = method;
|
||||
layer2.destroy();
|
||||
}
|
||||
|
||||
function test_Layer_initResolutions(t) {
|
||||
t.plan(12);
|
||||
var map = new OpenLayers.Map("map");
|
||||
var options, layer;
|
||||
|
||||
// three tests for minResolution, maxResolution, and numZoomLevels
|
||||
options = {
|
||||
minResolution: 1.5,
|
||||
maxResolution: 10.5,
|
||||
numZoomLevels: 5,
|
||||
map: map
|
||||
};
|
||||
layer = new OpenLayers.Layer("test", options);
|
||||
layer.initResolutions();
|
||||
t.eq(layer.minResolution.toPrecision(6), (1.5).toPrecision(6),
|
||||
"(with numZoomLevels) layer minResolution preserved");
|
||||
t.eq(layer.maxResolution.toPrecision(6), (10.5).toPrecision(6),
|
||||
"(with numZoomLevels) layer maxResolution preserved");
|
||||
t.eq(layer.numZoomLevels, 5, "(with numZoomLevels) layer numZoomLevels preserved");
|
||||
|
||||
// three tests for minResolution, and maxResolution
|
||||
options = {
|
||||
minResolution: 1.5,
|
||||
maxResolution: 10.5,
|
||||
map: map
|
||||
};
|
||||
layer = new OpenLayers.Layer("test", options);
|
||||
layer.initResolutions();
|
||||
t.eq(layer.minResolution.toPrecision(6), (1.5).toPrecision(6),
|
||||
"(without numZoomLevels) layer minResolution preserved");
|
||||
t.eq(layer.maxResolution.toPrecision(6), (10.5).toPrecision(6),
|
||||
"(without numZoomLevels) layer maxResolution preserved");
|
||||
t.eq(layer.numZoomLevels, 3, "(without numZoomLevels) layer numZoomLevels calculated");
|
||||
|
||||
// three tests for minScale, maxScale, and numZoomLevels
|
||||
options = {
|
||||
minScale: 105,
|
||||
maxScale: 15,
|
||||
numZoomLevels: 10,
|
||||
map: map
|
||||
};
|
||||
layer = new OpenLayers.Layer("test", options);
|
||||
layer.initResolutions();
|
||||
t.eq(layer.minScale.toPrecision(6), (105).toPrecision(6),
|
||||
"(with numZoomLevels) layer minScale preserved");
|
||||
t.eq(layer.maxScale.toPrecision(6), (15).toPrecision(6),
|
||||
"(with numZoomLevels) layer maxScale preserved");
|
||||
t.eq(layer.numZoomLevels, 10, "(with numZoomLevels) layer numZoomLevels preserved");
|
||||
|
||||
// three tests for minScale, and maxScale
|
||||
options = {
|
||||
minScale: 1555,
|
||||
maxScale: 155,
|
||||
map: map
|
||||
};
|
||||
layer = new OpenLayers.Layer("test", options);
|
||||
layer.initResolutions();
|
||||
t.eq(layer.minScale.toPrecision(6), (1555).toPrecision(6),
|
||||
"(without numZoomLevels) layer minScale preserved");
|
||||
t.eq(layer.maxScale.toPrecision(6), (155).toPrecision(6),
|
||||
"(without numZoomLevels) layer maxScale preserved");
|
||||
t.eq(layer.numZoomLevels, 4, "(without numZoomLevels) layer numZoomLevels calculated");
|
||||
|
||||
map.destroy();
|
||||
|
||||
|
||||
}
|
||||
|
||||
function test_05_Layer_visibility(t) {
|
||||
|
||||
t.plan(7);
|
||||
|
||||
var layer = new OpenLayers.Layer('Test Layer');
|
||||
|
||||
t.eq(layer.getVisibility(), true, "default for layer creation is visible");
|
||||
|
||||
layer.setVisibility(false);
|
||||
t.eq(layer.getVisibility(), false, "setVisibility false works");
|
||||
|
||||
layer.setVisibility(true);
|
||||
t.eq(layer.getVisibility(), true, "setVisibility true works");
|
||||
|
||||
// Need a map in order to have moveTo called.
|
||||
// Tests added for #654.
|
||||
var layer = new OpenLayers.Layer.WMS('Test Layer','http://example.com');
|
||||
var m = new OpenLayers.Map('map');
|
||||
m.addLayer(layer);
|
||||
m.zoomToMaxExtent();
|
||||
|
||||
layermoved = false;
|
||||
layer.moveTo = function() { layermoved = true; }
|
||||
|
||||
layer.events.register('visibilitychanged', t, function() {
|
||||
this.ok(true, "Visibility changed calls layer event.");
|
||||
});
|
||||
|
||||
layer.setVisibility(false);
|
||||
t.eq(layermoved, false, "Layer didn't move when calling setvis false");
|
||||
|
||||
layer.setVisibility(true);
|
||||
t.eq(layermoved, true, "Layer moved when calling setvis true.");
|
||||
|
||||
}
|
||||
|
||||
|
||||
function test_06_Layer_getZoomForResolution(t) {
|
||||
|
||||
t.plan(12);
|
||||
|
||||
var layer = new OpenLayers.Layer('Test Layer');
|
||||
layer.map = {};
|
||||
|
||||
//make some dummy resolutions
|
||||
layer.resolutions = [128, 64, 32, 16, 8, 4, 2];
|
||||
|
||||
t.eq(layer.getZoomForResolution(200), 0, "zoom all the way out");
|
||||
t.eq(layer.getZoomForResolution(25), 2, "zoom in middle");
|
||||
t.eq(layer.getZoomForResolution(3), 5, "zoom allmost all the way in");
|
||||
t.eq(layer.getZoomForResolution(1), 6, "zoom all the way in");
|
||||
|
||||
t.eq(layer.getZoomForResolution(65), 0, "smallest containing res");
|
||||
t.eq(layer.getZoomForResolution(63), 1, "smallest containing res");
|
||||
|
||||
t.eq(layer.getZoomForResolution(65, true), 1, "closest res");
|
||||
t.eq(layer.getZoomForResolution(63, true), 1, "closest res");
|
||||
|
||||
layer.map.fractionalZoom = true;
|
||||
t.eq(layer.getZoomForResolution(64), 1,
|
||||
"(fractionalZoom) correct zoom for res in array");
|
||||
t.eq(layer.getZoomForResolution(48).toPrecision(6), (1.5).toPrecision(6),
|
||||
"(fractionalZoom) linear scaling for res between entries");
|
||||
t.eq(layer.getZoomForResolution(200).toPrecision(6), (0).toPrecision(6),
|
||||
"(fractionalZoom) doesn't return zoom below zero");
|
||||
t.eq(layer.getZoomForResolution(1).toPrecision(6), (layer.resolutions.length - 1).toPrecision(6),
|
||||
"(fractionalZoom) doesn't return zoom above highest index");
|
||||
|
||||
}
|
||||
|
||||
function test_07_Layer_redraw(t) {
|
||||
t.plan(8)
|
||||
|
||||
var name = 'Test Layer';
|
||||
var url = "http://octo.metacarta.com/cgi-bin/mapserv";
|
||||
var params = { map: '/mapdata/vmap_wms.map',
|
||||
layers: 'basic',
|
||||
format: 'image/jpeg'};
|
||||
|
||||
var layer = new OpenLayers.Layer.WMS(name, url, params);
|
||||
|
||||
t.ok(!layer.redraw(),
|
||||
"redraw on an orphan layer returns false");
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
map.addLayer(layer);
|
||||
|
||||
t.ok(!layer.redraw(),
|
||||
"redraw returns false if map does not yet have a center");
|
||||
map.zoomToMaxExtent();
|
||||
|
||||
t.ok(layer.redraw(),
|
||||
"redraw returns true after map has a center");
|
||||
|
||||
layer.setVisibility(false);
|
||||
t.ok(!layer.redraw(),
|
||||
"redraw returns false if a layer is not visible");
|
||||
|
||||
layer.setVisibility(true);
|
||||
t.ok(layer.redraw(),
|
||||
"redraw returns true even if extent has not changed");
|
||||
|
||||
layer.moveTo = function(bounds, zoomChanged, dragging) {
|
||||
var extent = layer.map.getExtent();
|
||||
t.ok(bounds.equals(extent),
|
||||
"redraw calls moveTo with the map extent");
|
||||
t.ok(zoomChanged,
|
||||
"redraw calls moveTo with zoomChanged true");
|
||||
t.ok(!dragging,
|
||||
"redraw calls moveTo with dragging false");
|
||||
}
|
||||
layer.redraw();
|
||||
|
||||
}
|
||||
|
||||
function test_layer_setIsBaseLayer(t) {
|
||||
t.plan(2);
|
||||
var map = new OpenLayers.Map('map');
|
||||
layer = new OpenLayers.Layer();
|
||||
|
||||
map.events.register("changebaselayer", t, function() {
|
||||
this.ok(true, "setIsBaseLayer() trig changebaselayer event.")
|
||||
});
|
||||
|
||||
map.addLayer(layer);
|
||||
layer.setIsBaseLayer(true);
|
||||
t.ok(layer.isBaseLayer, "setIsBaseLayer() change isBaseLayer property.");
|
||||
}
|
||||
|
||||
function test_08_layer_setTileSize(t) {
|
||||
t.plan(6);
|
||||
|
||||
layer = new OpenLayers.Layer();
|
||||
|
||||
g_MapTileSize = new OpenLayers.Size(25,67);
|
||||
layer.map = {
|
||||
getTileSize: function() {
|
||||
return g_MapTileSize;
|
||||
}
|
||||
};
|
||||
|
||||
var layerTileSize = new OpenLayers.Size(1,1);
|
||||
|
||||
//TILE SIZE
|
||||
layer.tileSize = layerTileSize;
|
||||
|
||||
//parameter
|
||||
var size = new OpenLayers.Size(2,2);
|
||||
layer.setTileSize(size);
|
||||
t.ok(layer.tileSize.equals(size), "size paramater set correctly to layer's tile size");
|
||||
t.ok(layer.imageOffset == null, "imageOffset and imageSize null when no gutters")
|
||||
|
||||
//set on layer
|
||||
layer.tileSize = layerTileSize;
|
||||
layer.setTileSize();
|
||||
t.ok(layer.tileSize.equals(layerTileSize), "layer's tileSize property preserved if no parameter sent in");
|
||||
|
||||
//take it from map
|
||||
layer.tileSize = null;
|
||||
layer.setTileSize();
|
||||
t.ok(layer.tileSize.equals(g_MapTileSize), "layer's tileSize property is null and so correctly taken from the map");
|
||||
|
||||
|
||||
|
||||
//GUTTERS
|
||||
layer.gutter = 15;
|
||||
size = new OpenLayers.Size(10,100);
|
||||
layer.setTileSize(size);
|
||||
|
||||
var desiredImageOffset = new OpenLayers.Pixel(-15, -15);
|
||||
var desiredImageSize = new OpenLayers.Size(40, 130);
|
||||
|
||||
t.ok(layer.imageOffset.equals(desiredImageOffset), "image offset correctly calculated");
|
||||
t.ok(layer.imageSize.equals(desiredImageSize), "image size correctly calculated");
|
||||
}
|
||||
|
||||
function test_Layer_getResolution(t) {
|
||||
t.plan(1);
|
||||
var layer = new OpenLayers.Layer("test");
|
||||
layer.map = {
|
||||
getZoom: function() {return "foo";}
|
||||
};
|
||||
layer.getResolutionForZoom = function(zoom) {
|
||||
t.eq(zoom, "foo", "getResolution calls getResolutionForZoom");
|
||||
}
|
||||
layer.getResolution();
|
||||
layer.map = null;
|
||||
layer.destroy();
|
||||
}
|
||||
|
||||
function test_Layer_getResolutionForZoom(t) {
|
||||
t.plan(5);
|
||||
var layer = new OpenLayers.Layer("test");
|
||||
layer.map = {fractionalZoom: false};
|
||||
layer.resolutions = ["zero", "one", "two"];
|
||||
t.eq(layer.getResolutionForZoom(0), "zero",
|
||||
"(fractionalZoom false) returns resolution for given index");
|
||||
t.eq(layer.getResolutionForZoom(0.9), "one",
|
||||
"(fractionalZoom false) returns resolution for float index");
|
||||
|
||||
layer.resolutions = [2, 4, 6, 8];
|
||||
layer.map.fractionalZoom = true;
|
||||
t.eq(layer.getResolutionForZoom(1).toPrecision(6), (4).toPrecision(6),
|
||||
"(fractionalZoom true) returns resolution for integer zoom");
|
||||
t.eq(layer.getResolutionForZoom(1.5).toPrecision(6), (5).toPrecision(6),
|
||||
"(fractionalZoom true) returns resolution for float zoom");
|
||||
t.eq(layer.getResolutionForZoom(3.5).toPrecision(6), (8).toPrecision(6),
|
||||
"(fractionalZoom true) returns resolution for zoom beyond res length - 1");
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/******
|
||||
*
|
||||
*
|
||||
* HERE IS WHERE SOME TESTS SHOULD BE PUT TO CHECK ON THE LONLAT-PX TRANSLATION
|
||||
* FUNCTIONS AND RESOLUTION AND GETEXTENT GETZOOMLEVEL, ETC
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
function test_99_Layer_destroy (t) {
|
||||
t.plan( 5 );
|
||||
|
||||
var map = new OpenLayers.Map('map');
|
||||
|
||||
layer = new OpenLayers.Layer('Test Layer');
|
||||
|
||||
map.addLayer(layer);
|
||||
|
||||
layer.destroy();
|
||||
|
||||
t.eq( layer.name, null, "layer.name is null after destroy" );
|
||||
t.eq( layer.div, null, "layer.div is null after destroy" );
|
||||
t.eq( layer.map, null, "layer.map is null after destroy" );
|
||||
t.eq( layer.options, null, "layer.options is null after destroy" );
|
||||
|
||||
t.eq(map.layers.length, 0, "layer removed from map");
|
||||
|
||||
map.destroy();
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="map" style="width:500px;height:500px"></div>
|
||||
<div id="map2" style="width:100px;height:100px"></div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user