Merge pull request #1501 from oterral/vector-api

Add draw interaction tests
This commit is contained in:
Éric Lemoine
2014-01-10 05:15:29 -08:00
13 changed files with 37 additions and 9 deletions
+1
View File
@@ -9,6 +9,7 @@ goog.require('goog.object');
goog.require('ol.Feature'); goog.require('ol.Feature');
goog.require('ol.format.JSON'); goog.require('ol.format.JSON');
goog.require('ol.geom.GeometryCollection'); goog.require('ol.geom.GeometryCollection');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.LineString'); goog.require('ol.geom.LineString');
goog.require('ol.geom.MultiLineString'); goog.require('ol.geom.MultiLineString');
goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPoint');
+1
View File
@@ -21,6 +21,7 @@ goog.require('ol.Feature');
goog.require('ol.feature'); goog.require('ol.feature');
goog.require('ol.format.XML'); goog.require('ol.format.XML');
goog.require('ol.geom.GeometryCollection'); goog.require('ol.geom.GeometryCollection');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.LineString'); goog.require('ol.geom.LineString');
goog.require('ol.geom.MultiLineString'); goog.require('ol.geom.MultiLineString');
goog.require('ol.geom.MultiPoint'); goog.require('ol.geom.MultiPoint');
+1
View File
@@ -1,4 +1,5 @@
goog.provide('ol.geom.Geometry'); goog.provide('ol.geom.Geometry');
goog.provide('ol.geom.GeometryType');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
+1
View File
@@ -5,6 +5,7 @@ goog.require('goog.asserts');
goog.require('goog.object'); goog.require('goog.object');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.geom.Geometry'); goog.require('ol.geom.Geometry');
goog.require('ol.geom.GeometryType');
+1
View File
@@ -1,6 +1,7 @@
goog.provide('ol.geom.LinearRing'); goog.provide('ol.geom.LinearRing');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.SimpleGeometry');
goog.require('ol.geom.closest'); goog.require('ol.geom.closest');
goog.require('ol.geom.flat'); goog.require('ol.geom.flat');
+1
View File
@@ -1,6 +1,7 @@
goog.provide('ol.geom.LineString'); goog.provide('ol.geom.LineString');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.SimpleGeometry');
goog.require('ol.geom.closest'); goog.require('ol.geom.closest');
goog.require('ol.geom.flat'); goog.require('ol.geom.flat');
+1
View File
@@ -3,6 +3,7 @@ goog.provide('ol.geom.MultiLineString');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.LineString'); goog.require('ol.geom.LineString');
goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.SimpleGeometry');
goog.require('ol.geom.closest'); goog.require('ol.geom.closest');
+1
View File
@@ -1,6 +1,7 @@
goog.provide('ol.geom.MultiPoint'); goog.provide('ol.geom.MultiPoint');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.Point'); goog.require('ol.geom.Point');
goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.SimpleGeometry');
goog.require('ol.geom.flat'); goog.require('ol.geom.flat');
+1
View File
@@ -1,6 +1,7 @@
goog.provide('ol.geom.MultiPolygon'); goog.provide('ol.geom.MultiPolygon');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.Polygon'); goog.require('ol.geom.Polygon');
goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.SimpleGeometry');
goog.require('ol.geom.closest'); goog.require('ol.geom.closest');
+1
View File
@@ -2,6 +2,7 @@ goog.provide('ol.geom.Point');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.SimpleGeometry');
goog.require('ol.geom.flat'); goog.require('ol.geom.flat');
+1
View File
@@ -1,6 +1,7 @@
goog.provide('ol.geom.Polygon'); goog.provide('ol.geom.Polygon');
goog.require('ol.extent'); goog.require('ol.extent');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.LinearRing'); goog.require('ol.geom.LinearRing');
goog.require('ol.geom.SimpleGeometry'); goog.require('ol.geom.SimpleGeometry');
goog.require('ol.geom.closest'); goog.require('ol.geom.closest');
+18 -1
View File
@@ -7,7 +7,11 @@ goog.require('ol.Feature');
goog.require('ol.Map'); goog.require('ol.Map');
goog.require('ol.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol.MapBrowserEvent.EventType'); goog.require('ol.MapBrowserEvent.EventType');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.LineString'); goog.require('ol.geom.LineString');
goog.require('ol.geom.MultiLineString');
goog.require('ol.geom.MultiPoint');
goog.require('ol.geom.MultiPolygon');
goog.require('ol.geom.Point'); goog.require('ol.geom.Point');
goog.require('ol.geom.Polygon'); goog.require('ol.geom.Polygon');
goog.require('ol.interaction.Interaction'); goog.require('ol.interaction.Interaction');
@@ -395,7 +399,10 @@ ol.interaction.Draw.prototype.finishDrawing_ = function(event) {
goog.asserts.assert(!goog.isNull(sketchFeature)); goog.asserts.assert(!goog.isNull(sketchFeature));
var coordinates; var coordinates;
var geometry = sketchFeature.getGeometry(); var geometry = sketchFeature.getGeometry();
if (this.mode_ === ol.interaction.DrawMode.LINE_STRING) { if (this.mode_ === ol.interaction.DrawMode.POINT) {
goog.asserts.assertInstanceof(geometry, ol.geom.Point);
coordinates = geometry.getCoordinates();
} else if (this.mode_ === ol.interaction.DrawMode.LINE_STRING) {
goog.asserts.assertInstanceof(geometry, ol.geom.LineString); goog.asserts.assertInstanceof(geometry, ol.geom.LineString);
coordinates = geometry.getCoordinates(); coordinates = geometry.getCoordinates();
// remove the redundant last point // remove the redundant last point
@@ -407,6 +414,16 @@ ol.interaction.Draw.prototype.finishDrawing_ = function(event) {
// force clockwise order for exterior ring // force clockwise order for exterior ring
sketchFeature.setGeometry(new ol.geom.Polygon(coordinates)); sketchFeature.setGeometry(new ol.geom.Polygon(coordinates));
} }
// cast multi-part geometries
if (this.type_ === ol.geom.GeometryType.MULTI_POINT) {
sketchFeature.setGeometry(new ol.geom.MultiPoint([coordinates]));
} else if (this.type_ === ol.geom.GeometryType.MULTI_LINE_STRING) {
sketchFeature.setGeometry(new ol.geom.MultiLineString([coordinates]));
} else if (this.type_ === ol.geom.GeometryType.MULTI_POLYGON) {
sketchFeature.setGeometry(new ol.geom.MultiPolygon([coordinates]));
}
if (this.layer_) { if (this.layer_) {
this.layer_.getSource().addFeature(sketchFeature); this.layer_.getSource().addFeature(sketchFeature);
} }
@@ -80,7 +80,7 @@ describe('ol.interaction.Draw', function() {
simulateEvent('mousedown', 10, 20); simulateEvent('mousedown', 10, 20);
simulateEvent('mouseup', 10, 20); simulateEvent('mouseup', 10, 20);
simulateEvent('click', 10, 20); simulateEvent('click', 10, 20);
var features = source.getFeatures(); var features = source.getAllFeatures();
expect(features).to.have.length(1); expect(features).to.have.length(1);
var geometry = features[0].getGeometry(); var geometry = features[0].getGeometry();
expect(geometry).to.be.a(ol.geom.Point); expect(geometry).to.be.a(ol.geom.Point);
@@ -93,7 +93,7 @@ describe('ol.interaction.Draw', function() {
simulateEvent('mousemove', 15, 20); simulateEvent('mousemove', 15, 20);
simulateEvent('mouseup', 15, 20); simulateEvent('mouseup', 15, 20);
simulateEvent('click', 15, 20); simulateEvent('click', 15, 20);
var features = source.getFeatures(); var features = source.getAllFeatures();
expect(features).to.have.length(0); expect(features).to.have.length(0);
}); });
@@ -113,7 +113,7 @@ describe('ol.interaction.Draw', function() {
simulateEvent('mousedown', 30, 15); simulateEvent('mousedown', 30, 15);
simulateEvent('mouseup', 30, 15); simulateEvent('mouseup', 30, 15);
simulateEvent('click', 30, 15); simulateEvent('click', 30, 15);
var features = source.getFeatures(); var features = source.getAllFeatures();
expect(features).to.have.length(1); expect(features).to.have.length(1);
var geometry = features[0].getGeometry(); var geometry = features[0].getGeometry();
expect(geometry).to.be.a(ol.geom.MultiPoint); expect(geometry).to.be.a(ol.geom.MultiPoint);
@@ -149,7 +149,7 @@ describe('ol.interaction.Draw', function() {
simulateEvent('mouseup', 30, 20); simulateEvent('mouseup', 30, 20);
simulateEvent('click', 30, 20); simulateEvent('click', 30, 20);
var features = source.getFeatures(); var features = source.getAllFeatures();
expect(features).to.have.length(1); expect(features).to.have.length(1);
var geometry = features[0].getGeometry(); var geometry = features[0].getGeometry();
expect(geometry).to.be.a(ol.geom.LineString); expect(geometry).to.be.a(ol.geom.LineString);
@@ -182,7 +182,7 @@ describe('ol.interaction.Draw', function() {
simulateEvent('mouseup', 30, 20); simulateEvent('mouseup', 30, 20);
simulateEvent('click', 30, 20); simulateEvent('click', 30, 20);
var features = source.getFeatures(); var features = source.getAllFeatures();
expect(features).to.have.length(1); expect(features).to.have.length(1);
var geometry = features[0].getGeometry(); var geometry = features[0].getGeometry();
expect(geometry).to.be.a(ol.geom.LineString); expect(geometry).to.be.a(ol.geom.LineString);
@@ -218,7 +218,7 @@ describe('ol.interaction.Draw', function() {
simulateEvent('mouseup', 30, 20); simulateEvent('mouseup', 30, 20);
simulateEvent('click', 30, 20); simulateEvent('click', 30, 20);
var features = source.getFeatures(); var features = source.getAllFeatures();
expect(features).to.have.length(1); expect(features).to.have.length(1);
var geometry = features[0].getGeometry(); var geometry = features[0].getGeometry();
expect(geometry).to.be.a(ol.geom.MultiLineString); expect(geometry).to.be.a(ol.geom.MultiLineString);
@@ -261,7 +261,7 @@ describe('ol.interaction.Draw', function() {
simulateEvent('mouseup', 10, 20); simulateEvent('mouseup', 10, 20);
simulateEvent('click', 10, 20); simulateEvent('click', 10, 20);
var features = source.getFeatures(); var features = source.getAllFeatures();
expect(features).to.have.length(1); expect(features).to.have.length(1);
var geometry = features[0].getGeometry(); var geometry = features[0].getGeometry();
expect(geometry).to.be.a(ol.geom.Polygon); expect(geometry).to.be.a(ol.geom.Polygon);
@@ -308,7 +308,7 @@ describe('ol.interaction.Draw', function() {
simulateEvent('mouseup', 10, 20); simulateEvent('mouseup', 10, 20);
simulateEvent('click', 10, 20); simulateEvent('click', 10, 20);
var features = source.getFeatures(); var features = source.getAllFeatures();
expect(features).to.have.length(1); expect(features).to.have.length(1);
var geometry = features[0].getGeometry(); var geometry = features[0].getGeometry();
expect(geometry).to.be.a(ol.geom.MultiPolygon); expect(geometry).to.be.a(ol.geom.MultiPolygon);