diff options
Diffstat (limited to 'misc/openlayers/tests/Control/Split.html')
-rw-r--r-- | misc/openlayers/tests/Control/Split.html | 319 |
1 files changed, 0 insertions, 319 deletions
diff --git a/misc/openlayers/tests/Control/Split.html b/misc/openlayers/tests/Control/Split.html deleted file mode 100644 index e3a6eac..0000000 --- a/misc/openlayers/tests/Control/Split.html +++ /dev/null @@ -1,319 +0,0 @@ -<html> -<head> - <script src="../OLLoader.js"></script> - <script type="text/javascript"> - - function test_initialize(t) { - - t.plan(4); - - var layer = new OpenLayers.Layer.Vector(); - var control; - - // construct with nothing - control = new OpenLayers.Control.Split(); - t.ok(control instanceof OpenLayers.Control, "instanceof OpenLayers.Control"); - t.ok(control instanceof OpenLayers.Control, "instanceof OpenLayers.Control.Split") - control.destroy(); - - // construct with a single target layer - control = new OpenLayers.Control.Split({ - layer: layer - }); - t.ok(control.layer === layer, "target layer properly set"); - control.destroy(); - - // construct with same target and source - control = new OpenLayers.Control.Split({ - layer: layer, - source: layer - }); - t.ok(control.source === layer, "source layer properly set"); - control.destroy(); - } - - function test_setSource(t) { - t.plan(5); - - var layer1 = new OpenLayers.Layer.Vector("foo", { - maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10), - isBaseLayer: true - }); - var layer2 = new OpenLayers.Layer.Vector("foo", { - maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10), - isBaseLayer: true - }); - - var control = new OpenLayers.Control.Split({layer: layer1}); - - var map = new OpenLayers.Map("map"); - map.addLayers([layer1, layer2]); - map.zoomToMaxExtent(); - map.addControl(control); - control.activate(); - - // confirm sketch hander created - t.ok(control.handler, "sketch handler created"); - t.eq(control.handler.active, true, "sketch handler active"); - - control.setSource(layer1); - t.ok(control.source === layer1, "layer1 properly set"); - t.ok(!control.handler, "no more sketch handler"); - - // activate and switch to new source layer - control.setSource(layer2); - t.ok(control.source === layer2, "layer2 properly set"); - - map.destroy(); - - } - - function test_activate(t) { - t.plan(8); - - var layer = new OpenLayers.Layer.Vector("foo", { - maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10), - isBaseLayer: true - }); - var control = new OpenLayers.Control.Split({layer: layer}); - var map = new OpenLayers.Map("map"); - map.addLayer(layer); - map.zoomToMaxExtent(); - map.addControl(control); - - // test activation with no source layer - control.activate(); - t.eq(control.active, true, "control is active"); - t.ok(control.handler instanceof OpenLayers.Handler.Path, "line sketch handler created"); - t.ok(control.handler.callbacks.done, "done callback set on sketch handler"); - t.eq(control.handler.active, true, "sketch handler is active"); - - // change the source layer - this should call activate again - control.setSource(layer); - - t.eq(control.active, true, "control is still active"); - t.ok(control.source === layer, "source layer set"); - t.ok(layer.events.listeners.sketchcomplete, "sketchcomplete listener registered"); - t.ok(layer.events.listeners.afterfeaturemodified, "afterfeaturemodified listener registered"); - - map.destroy(); - - } - - function test_deactivate(t) { - - t.plan(7); - - var layer1 = new OpenLayers.Layer.Vector("foo", { - maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10), - isBaseLayer: true - }); - var layer2 = new OpenLayers.Layer.Vector("bar", { - maxExtent: new OpenLayers.Bounds(-10, -10, 10, 10), - isBaseLayer: false - }); - var control = new OpenLayers.Control.Split({layer: layer1}); - var map = new OpenLayers.Map("map"); - map.addLayer(layer1); - map.addLayer(layer2); - map.zoomToMaxExtent(); - map.addControl(control); - - // activate and check sketch handler - control.activate(); - t.ok(control.handler, "sketch handler present"); - t.eq(control.handler.active, true, "sketch handler active"); - - // deactivate and check sketch handler - control.deactivate(); - t.eq(control.handler.active, false, "sketch handler deactivated"); - - // set a source layer - control.setSource(layer2); - - // activate and check that listeners are registered - control.activate(); - t.ok(layer2.events.listeners.sketchcomplete, "sketchcomplete listener registered"); - t.ok(layer2.events.listeners.afterfeaturemodified, "afterfeaturemodified listener registered"); - - // deactivate and confirm no draw related events - control.deactivate(); - t.eq(layer2.events.listeners.sketchcomplete.length, 0, "no sketchcomplete listeners"); - t.eq(layer2.events.listeners.afterfeaturemodified.length, 0, "no afterfeaturemodified listeners"); - - map.destroy(); - } - - function test_isEligible(t) { - - t.plan(10); - - var control = new OpenLayers.Control.Split(); - var geometry = OpenLayers.Geometry.fromWKT("LINESTRING(0 1, 1 2)"); - var feature = new OpenLayers.Feature.Vector( - geometry, - {foo: "bar"} - ); - - t.eq(control.isEligible(feature), true, "plain old feature is eligible"); - - feature.state = OpenLayers.State.DELETE; - t.eq(control.isEligible(feature), false, "feature slated for deletion is not eligible"); - delete feature.state; - t.eq(control.isEligible(feature), true, "feature with no state is eligible"); - - feature.geometry = new OpenLayers.Geometry.Point(1, 1); - t.eq(control.isEligible(feature), false, "feature with point geometry is not eligible"); - feature.geometry = new OpenLayers.Geometry.MultiLineString([geometry]); - t.eq(control.isEligible(feature), true, "feature with multilinestring geometry is eligible"); - - control.feature = feature; - t.eq(control.isEligible(feature), false, "source feature is not eligible as target"); - control.feature = new OpenLayers.Feature.Vector(); - t.eq(control.isEligible(feature), true, "feature is eligible if different than source feature"); - - control.targetFilter = new OpenLayers.Filter.Comparison({ - type: OpenLayers.Filter.Comparison.NOT_EQUAL_TO, - property: "foo", - value: "bar" - }); - t.eq(control.isEligible(feature), false, "feature is not eligible unless it matches filter"); - control.targetFilter.value = "baz"; - t.eq(control.isEligible(feature), true, "feature is eligible if it matches filter"); - - delete feature.geometry; - t.eq(control.isEligible(feature), false, "feature with no geometry is not eligible"); - - control.destroy(); - - } - - function test_considerSplit(t) { - - var layer = new OpenLayers.Layer.Vector(); - - var wkt = OpenLayers.Geometry.fromWKT; - var geoms = { - abc: wkt("LINESTRING(0 0, 2 2)"), - ab: wkt("LINESTRING(0 0, 1 1)"), - bc: wkt("LINESTRING(1 1, 2 2)"), - dbe: wkt("LINESTRING(2 0, 0 2)"), - db: wkt("LINESTRING(2 0, 1 1)"), - be: wkt("LINESTRING(1 1, 0 2)") - }; - - var Feature = OpenLayers.Feature.Vector; - var feats = { - abc: new Feature(geoms.abc), - ab: new Feature(geoms.ab), - bc: new Feature(geoms.bc), - dbe: new Feature(geoms.dbe), - db: new Feature(geoms.db), - be: new Feature(geoms.be) - }; - - function feature(id, options) { - var f = OpenLayers.Util.extend(feats[id].clone(), options); - // for testing, we want to check when features are destroyed - f.destroy = function() { - f.state = "destroyed"; - } - return f; - } - var DELETE = OpenLayers.State.DELETE; - var INSERT = OpenLayers.State.INSERT; - var UPDATE = OpenLayers.State.UPDATE; - - var cases = [{ - targets: [ - feature("abc") - ], - source: feature("dbe"), - splits: [{ - original: feature("abc", {state: "destroyed"}), - features: [feature("ab", {state: INSERT}), feature("bc", {state: INSERT})] - }, { - original: feature("dbe", {state: "destroyed"}), - features: [feature("db", {state: INSERT}), feature("be", {state: INSERT})] - }] - }, { - options: {deferDelete: true}, - targets: [ - feature("abc", {state: INSERT}) - ], - source: feature("dbe"), - splits: [{ - original: feature("abc", {state: "destroyed"}), - features: [feature("ab", {state: INSERT}), feature("bc", {state: INSERT})] - }, { - original: feature("dbe", {state: DELETE}), - features: [feature("db", {state: INSERT}), feature("be", {state: INSERT})] - }] - }, { - options: {deferDelete: true}, - targets: [ - feature("abc", {state: UPDATE}) - ], - source: feature("dbe", {state: INSERT}), - splits: [{ - original: feature("abc", {state: DELETE}), - features: [feature("ab", {state: INSERT}), feature("bc", {state: INSERT})] - }, { - original: feature("dbe", {state: "destroyed"}), - features: [feature("db", {state: INSERT}), feature("be", {state: INSERT})] - }] - }]; - - var count = 0; - var c, control, options, log, event, split; - for(var i=0; i<cases.length; ++i) { - c = cases[i]; - ++count; // test number of splits - for(var j=0; j<c.splits.length; ++j) { - split = c.splits[j]; - ++count; // test original state - ++count; // test original geometry - ++count; // test number of parts - for(var k=0; k<split.features.length; ++k) { - ++count; // test part state - ++count; // test part geometry - } - } - } - t.plan(count); - - for(var i=0; i<cases.length; ++i) { - c = cases[i]; - log = {events: []}; - options = OpenLayers.Util.extend({layer: layer, source: layer}, c.options); - control = new OpenLayers.Control.Split(options); - control.events.on({ - split: function(e) { - log.events.push(e); - } - }); - layer.features = c.targets; - control.considerSplit(c.source); - t.eq(log.events.length, c.splits.length, "case " + i + ": correct number of split events"); - for(var j=0; j<log.events.length; ++j) { - event = log.events[j]; - split = c.splits[j]; - t.eq(event.original.state, split.original.state, "case " + i + " split " + j + ": correct original state"); - t.geom_eq(event.original.geometry, split.original.geometry, "case " + i + " split " + j + ": correct original geometry"); - t.eq(event.features.length, split.features.length, "case " + i + " split " + j + ": correct number of parts"); - for(var k=0; k<split.features.length; ++k) { - t.eq(event.features[k].state, split.features[k].state, "case " + i + " split " + j + " feature " + k + ": correct state"); - t.geom_eq(event.features[k].geometry, split.features[k].geometry, "case " + i + " split " + j + " feature " + k + ": correct geometry"); - } - } - control.destroy(); - } - - } - - </script> -</head> -<body> - <div id="map" style="width: 100px; height: 100px;"></div> -</body> -</html> |