git-svn-id: http://svn.openlayers.org/trunk/openlayers@4059 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
273 lines
11 KiB
HTML
273 lines
11 KiB
HTML
<html>
|
|
<head>
|
|
<script src="../../lib/OpenLayers.js"></script>
|
|
<script type="text/javascript">
|
|
|
|
var name = "Vector Layer";
|
|
|
|
function test_01_Layer_Vector_constructor(t) {
|
|
t.plan(3);
|
|
|
|
var layer = new OpenLayers.Layer.Vector(name);
|
|
t.ok(layer instanceof OpenLayers.Layer.Vector, "new OpenLayers.Layer.Vector returns correct object" );
|
|
t.eq(layer.name, name, "layer name is correctly set");
|
|
t.ok(layer.renderer.CLASS_NAME, "layer has a renderer");
|
|
|
|
}
|
|
|
|
function test_02_Layer_Vector_addFeatures(t) {
|
|
t.plan(2);
|
|
|
|
var layer = new OpenLayers.Layer.Vector(name);
|
|
|
|
var point = new OpenLayers.Geometry.Point(-111.04, 45.68);
|
|
var pointFeature = new OpenLayers.Feature.Vector(point);
|
|
layer.addFeatures([pointFeature]);
|
|
|
|
t.eq(layer.features.length, 1, "OpenLayers.Layer.Vector.addFeatures adds something to the array");
|
|
t.ok(layer.features[0] == pointFeature, "OpenLayers.Layer.Vector.addFeatures returns an array of features");
|
|
}
|
|
|
|
function test_03_Layer_Vector_removeFeatures(t) {
|
|
t.plan(3);
|
|
|
|
var layer = new OpenLayers.Layer.Vector(name);
|
|
|
|
var point1 = new OpenLayers.Geometry.Point(-111.04, 45.68);
|
|
var pointFeature1 = new OpenLayers.Feature.Vector(layer, point1);
|
|
var point2 = new OpenLayers.Geometry.Point(-111.14, 45.78);
|
|
var pointFeature2 = new OpenLayers.Feature.Vector(layer, point2);
|
|
|
|
layer.addFeatures([pointFeature1, pointFeature2]);
|
|
var features = layer.removeFeatures([pointFeature1]);
|
|
|
|
t.ok(layer.features.length == 1, "OpenLayers.Layer.Vector.removeFeatures removes a feature from the features array");
|
|
layer.addFeatures([pointFeature1.clone(), pointFeature2.clone()]);
|
|
layer.selectedFeatures.push(layer.features[0]);
|
|
layer.removeFeatures(layer.features[0]);
|
|
t.eq(layer.selectedFeatures, [], "Remove features removes selected features");
|
|
var features = layer.removeFeatures(layer.features);
|
|
|
|
t.ok(layer.features.length == 0,
|
|
"OpenLayers.Layer.Vector.removeFeatures(layer.features) removes all feature from the features array");
|
|
}
|
|
|
|
function test_Layer_Vector_addStyle (t) {
|
|
t.plan(2);
|
|
layer = new OpenLayers.Layer.Vector(name);
|
|
var map = new OpenLayers.Map('map');
|
|
map.addLayer(layer);
|
|
f = new OpenLayers.Feature.Vector();
|
|
t.eq( f.style, null, "Feature style is null by default.");
|
|
layer.addFeatures(f);
|
|
t.ok( f.style != null, "Feature style is set by layer.");
|
|
}
|
|
|
|
function test_Layer_Vector_drawFeature(t) {
|
|
t.plan(4);
|
|
var layer = new OpenLayers.Layer.Vector("Test Layer");
|
|
var map = new OpenLayers.Map('map');
|
|
map.addLayer(layer);
|
|
var geometry = new OpenLayers.Geometry.Point(10, 10);
|
|
var feature = new OpenLayers.Feature.Vector(geometry);
|
|
|
|
var f, s;
|
|
|
|
// Layer renderer needs a destroy, and draw, for functional tests.
|
|
layer.renderer = {
|
|
drawFeature: function(feature, style) {
|
|
f = feature;
|
|
s = style;
|
|
},
|
|
destroy: function() { }
|
|
};
|
|
|
|
|
|
layer.drawFeature(feature);
|
|
t.ok(geometry.equals(f.geometry),
|
|
"calls layer.renderer.drawFeature() with feature.geometry");
|
|
|
|
feature.style = 'exists';
|
|
layer.drawFeature(feature);
|
|
t.eq(feature.style, s,
|
|
"calls layer.renderer.drawFeature() with feature.style");
|
|
|
|
feature.style = null;
|
|
layer.style = 'exists';
|
|
layer.drawFeature(feature);
|
|
t.eq(layer.style, s,
|
|
"given null feature style, uses layer style");
|
|
|
|
feature.style = 'exists';
|
|
layer.style = 'exists';
|
|
var customStyle = 'custom';
|
|
layer.drawFeature(feature, customStyle);
|
|
t.eq(customStyle, s,
|
|
"given a custom style, renders with that");
|
|
|
|
}
|
|
|
|
function test_Layer_Vector_eraseFeatures(t) {
|
|
t.plan(2);
|
|
var layer = new OpenLayers.Layer.Vector("Test Layer");
|
|
var map = new OpenLayers.Map('map');
|
|
map.addLayer(layer);
|
|
var geometry = new OpenLayers.Geometry.Point(10, 10);
|
|
var feature = new OpenLayers.Feature.Vector(geometry);
|
|
|
|
var f;
|
|
layer.renderer = {
|
|
eraseFeatures: function(features) {
|
|
f = features[0];
|
|
},
|
|
destroy: function() { }
|
|
};
|
|
|
|
layer.eraseFeatures([feature]);
|
|
t.ok(f, "calls layer.renderer.eraseFeatures");
|
|
t.ok(geometry.equals(f.geometry),
|
|
"calls layer.renderer.eraseFeatures() given an array of features");
|
|
}
|
|
|
|
function test_Layer_Vector_destroyFeatures (t) {
|
|
t.plan(3);
|
|
layer = new OpenLayers.Layer.Vector(name);
|
|
var map = new OpenLayers.Map('map');
|
|
map.addLayer(layer);
|
|
var features = [];
|
|
for (var i = 0; i < 5; i++) {
|
|
features.push(new OpenLayers.Feature.Vector(
|
|
new OpenLayers.Geometry.Point(0,0)));
|
|
}
|
|
layer.addFeatures(features);
|
|
t.eq(layer.features.length, 5, "addFeatures adds 5 features");
|
|
layer.selectedFeatures.push(features[0]);
|
|
layer.destroyFeatures();
|
|
t.eq(layer.features.length, 0, "destroyFeatures triggers removal");
|
|
t.eq(layer.selectedFeatures, [], "Destroy features removes selected features");
|
|
}
|
|
|
|
function test_99_Layer_Vector_destroy (t) {
|
|
t.plan(1);
|
|
layer = new OpenLayers.Layer.Vector(name);
|
|
var map = new OpenLayers.Map('map');
|
|
map.addLayer(layer);
|
|
layer.destroy();
|
|
t.eq(layer.map, null, "layer.map is null after destroy");
|
|
}
|
|
|
|
function test_Layer_Vector_externalGraphic(t) {
|
|
t.plan(8);
|
|
// base layer is needed for getResolution() to return a value,
|
|
// otherwise VML test will fail because style.left and style.top
|
|
// cannot be set
|
|
var baseLayer = new OpenLayers.Layer.WMS("Base Layer",
|
|
"http://octo.metacarta.com/cgi-bin/mapserv",
|
|
{ map: '/mapdata/vmap_wms.map',
|
|
layers: 'basic',
|
|
format: 'image/png'});
|
|
|
|
var layer = new OpenLayers.Layer.Vector("Test Layer");
|
|
var map = new OpenLayers.Map('map');
|
|
map.addLayers([baseLayer, layer]);
|
|
|
|
var geometry = new OpenLayers.Geometry.Point(10, 10);
|
|
var feature = new OpenLayers.Feature.Vector(geometry);
|
|
|
|
var customStyle1 = new Object({
|
|
externalGraphic: 'test.png',
|
|
pointRadius: 10
|
|
});
|
|
var customStyle2 = new Object({
|
|
externalGraphic: 'test.png',
|
|
graphicWidth: 12
|
|
});
|
|
var customStyle3 = new Object({
|
|
externalGraphic: 'test.png',
|
|
graphicHeight: 14
|
|
});
|
|
var customStyle4 = new Object({
|
|
externalGraphic: 'test.png',
|
|
graphicWidth: 24,
|
|
graphicHeight: 16
|
|
});
|
|
|
|
var root = layer.renderer.root;
|
|
if (layer.renderer.CLASS_NAME == 'OpenLayers.Renderer.SVG') {
|
|
feature.style = customStyle1;
|
|
layer.drawFeature(feature);
|
|
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
|
(2*customStyle1.pointRadius).toString(),
|
|
"given a pointRadius, width equals 2*pointRadius");
|
|
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
|
(2*customStyle1.pointRadius).toString(),
|
|
"given a pointRadius, height equals 2*pointRadius");
|
|
feature.style = customStyle2;
|
|
layer.drawFeature(feature);
|
|
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
|
root.firstChild.getAttributeNS(null, 'height'),
|
|
"given a graphicWidth, width equals height");
|
|
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
|
customStyle2.graphicWidth.toString(),
|
|
"width is set correctly");
|
|
feature.style = customStyle3;
|
|
layer.drawFeature(feature);
|
|
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
|
root.firstChild.getAttributeNS(null, 'width'),
|
|
"given a graphicHeight, height equals width");
|
|
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
|
customStyle3.graphicHeight.toString(),
|
|
"height is set correctly");
|
|
feature.style = customStyle4;
|
|
layer.drawFeature(feature);
|
|
t.eq(root.firstChild.getAttributeNS(null, 'height'),
|
|
customStyle4.graphicHeight.toString(),
|
|
"given graphicHeight and graphicWidth, both are set: height")
|
|
t.eq(root.firstChild.getAttributeNS(null, 'width'),
|
|
customStyle4.graphicWidth.toString(),
|
|
"given graphicHeight and graphicWidth, both are set: width")
|
|
}
|
|
if (layer.renderer.CLASS_NAME == 'OpenLayers.Renderer.VML') {
|
|
feature.style = customStyle1;
|
|
layer.drawFeature(feature);
|
|
t.eq(root.firstChild.style.width,
|
|
(2*customStyle1.pointRadius).toString()+'px',
|
|
"given a pointRadius, width equals 2*pointRadius");
|
|
t.eq(root.firstChild.style.height,
|
|
(2*customStyle1.pointRadius).toString()+'px',
|
|
"given a pointRadius, height equals 2*pointRadius");
|
|
feature.style = customStyle2;
|
|
layer.drawFeature(feature);
|
|
t.eq(root.firstChild.style.width,
|
|
root.firstChild.style.height,
|
|
"given a graphicWidth, width equals height");
|
|
t.eq(root.firstChild.style.width,
|
|
customStyle2.graphicWidth.toString()+'px',
|
|
"width is set correctly");
|
|
feature.style = customStyle3;
|
|
layer.drawFeature(feature);
|
|
t.eq(root.firstChild.style.height,
|
|
root.firstChild.style.width,
|
|
"given a graphicHeight, height equals width");
|
|
t.eq(root.firstChild.style.height,
|
|
customStyle3.graphicHeight.toString()+'px',
|
|
"height is set correctly");
|
|
feature.style = customStyle4;
|
|
layer.drawFeature(feature);
|
|
t.eq(root.firstChild.style.height,
|
|
customStyle4.graphicHeight.toString()+'px',
|
|
"given graphicHeight and graphicWidth, both are set: height")
|
|
t.eq(root.firstChild.style.width,
|
|
customStyle4.graphicWidth.toString()+'px',
|
|
"given graphicHeight and graphicWidth, both are set: width")
|
|
}
|
|
}
|
|
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="map" style="width:500px;height:550px"></div>
|
|
</body>
|
|
</html>
|