diff options
Diffstat (limited to 'misc/openlayers/tests/Control/TransformFeature.html')
-rw-r--r-- | misc/openlayers/tests/Control/TransformFeature.html | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/misc/openlayers/tests/Control/TransformFeature.html b/misc/openlayers/tests/Control/TransformFeature.html new file mode 100644 index 0000000..3279867 --- /dev/null +++ b/misc/openlayers/tests/Control/TransformFeature.html @@ -0,0 +1,129 @@ +<html> +<head> + <script src="../OLLoader.js"></script> + <script type="text/javascript"> + + function test_initialize(t) { + t.plan(6); + var layer = "foo"; + var control = new OpenLayers.Control.TransformFeature(layer); + + t.ok(control.layer == layer, + "constructor sets layer correctly"); + t.ok(control.dragControl instanceof OpenLayers.Control.DragFeature, + "constructor sets the drag control correctly"); + t.ok(control.box instanceof OpenLayers.Feature.Vector, + "box feature created"); + t.eq(control.handles.length, 8, "8 handles created"); + t.eq(control.rotationHandles.length, 4, "4 rotation handles created") + t.eq(typeof control.rotationHandleSymbolizer, "object", + "rotationHandleSymbolizer initialized"); + control.destroy(); + } + + function test_destroy(t) { + t.plan(1); + var map = new OpenLayers.Map("map"); + var layer = new OpenLayers.Layer.Vector(); + map.addLayer(layer); + var control = new OpenLayers.Control.TransformFeature(layer); + control.dragControl.destroy = function() { + t.ok(true, + "control.destroy calls destroy on drag control"); + }; + control.destroy(); + map.destroy(); + } + + function test_activate(t) { + t.plan(3); + var map = new OpenLayers.Map("map"); + var layer = new OpenLayers.Layer.Vector(); + map.addLayer(layer); + var control = new OpenLayers.Control.TransformFeature(layer); + map.addControl(control); + + t.ok(!control.dragControl.active, + "drag control is not active prior to activating control"); + control.activate(); + t.ok(control.dragControl.active, + "drag control is active after activating control"); + t.ok(control.box.layer === layer, "box added to layer"); + + map.destroy(); + } + + function test_setFeature(t) { + t.plan(6); + var map = new OpenLayers.Map("map", {allOverlays: true}); + var layer = new OpenLayers.Layer.Vector(); + var feature = new OpenLayers.Feature.Vector( + OpenLayers.Geometry.fromWKT("POLYGON((-1 -1, 1 -1, 1 1, -1 1))")); + layer.addFeatures([feature]); + map.addLayer(layer); + map.setCenter(new OpenLayers.LonLat(0, 0), 18); + var control = new OpenLayers.Control.TransformFeature(layer); + map.addControl(control); + var log = []; + control.events.on({ + "beforesetfeature": function(e) { log.push(e); }, + "setfeature": function(e) { log.push(e); } + }); + control.setFeature(feature); + + t.eq(log[0].type, "beforesetfeature", "beforesetfeature event fired with correct event type"); + t.eq(log[1].type, "setfeature", "setfeature event fired with correct event type"); + + t.ok(control.active, "control activated on setFeature"); + t.ok(feature.geometry.getBounds().equals(control.box.geometry.getBounds()), "box positioned correctly"); + t.geom_eq(control.handles[0].geometry, control.box.geometry.components[0], "handle positioned with box"); + + var center = new OpenLayers.LonLat(1, 1); + control.box.move(center); + t.geom_eq(control.handles[0].geometry, control.box.geometry.components[0], "handle moved with box"); + } + + function test_handleMove(t) { + t.plan(16); + var map = new OpenLayers.Map("map", {allOverlays: true}); + var layer = new OpenLayers.Layer.Vector(); + var feature = new OpenLayers.Feature.Vector( + OpenLayers.Geometry.fromWKT("POLYGON((-1 -1, 1 -1, 1 1, -1 1))")); + layer.addFeatures([feature]); + map.addLayer(layer); + map.setCenter(new OpenLayers.LonLat(0, 0), 18); + var control = new OpenLayers.Control.TransformFeature(layer); + map.addControl(control); + control.setFeature(feature); + + var bottomLeft = new OpenLayers.LonLat(-2, -2); + control.handles[0].move(bottomLeft); + t.geom_eq(control.handles[0].geometry, new OpenLayers.Geometry.Point(-2, -2), "bottom left handle at -2,-2"); + t.geom_eq(control.handles[1].geometry, new OpenLayers.Geometry.Point(0, -2), "bottom handle at 0,-2"); + t.geom_eq(control.handles[2].geometry, new OpenLayers.Geometry.Point(2, -2), "bottom right handle at 2,-2"); + t.geom_eq(control.handles[3].geometry, new OpenLayers.Geometry.Point(2, 0), "right handle at 2,0"); + t.geom_eq(control.handles[4].geometry, new OpenLayers.Geometry.Point(2, 2), "top right handle at 2,2"); + t.geom_eq(control.handles[5].geometry, new OpenLayers.Geometry.Point(0, 2), "top handle at 0,2"); + t.geom_eq(control.handles[6].geometry, new OpenLayers.Geometry.Point(-2, 2), "top left handle at -2,2"); + t.geom_eq(control.handles[7].geometry, new OpenLayers.Geometry.Point(-2, 0), "left handle at -2,0"); + + control.irregular = true; + + var bottomLeft = new OpenLayers.LonLat(-3, -3); + control.handles[0].move(bottomLeft); + t.geom_eq(control.handles[0].geometry, new OpenLayers.Geometry.Point(-3, -3), "bottom left handle at -3,-3"); + t.geom_eq(control.handles[1].geometry, new OpenLayers.Geometry.Point(-0.5, -3), "bottom handle at 0,-3"); + t.geom_eq(control.handles[2].geometry, new OpenLayers.Geometry.Point(2, -3), "bottom right handle at 2,-3"); + t.geom_eq(control.handles[3].geometry, new OpenLayers.Geometry.Point(2, -0.5), "right handle at 2,0"); + t.geom_eq(control.handles[4].geometry, new OpenLayers.Geometry.Point(2, 2), "top right handle at 2,2"); + t.geom_eq(control.handles[5].geometry, new OpenLayers.Geometry.Point(-0.5, 2), "top handle at 0,2"); + t.geom_eq(control.handles[6].geometry, new OpenLayers.Geometry.Point(-3, 2), "top left handle at -3,2"); + t.geom_eq(control.handles[7].geometry, new OpenLayers.Geometry.Point(-3, -0.5), "left handle at -3,0"); + } + + </script> +</head> +<body> + <div id="map" style="width: 400px; height: 250px;"/> +</body> +</html> |