MultiPoints shall only contain points.

This commit is contained in:
Marc Jansen
2012-06-21 18:20:54 +02:00
parent 340caf2720
commit 8f90db58dc
2 changed files with 25 additions and 1 deletions

View File

@@ -12,7 +12,12 @@ goog.require('ol.geom.Collection');
* @constructor
*/
ol.geom.MultiPoint = function(points) {
this.setComponents(points);
this.setTypeWhitelist([ol.geom.Point]);
this.setTypeBlacklist([ol.geom.Geometry]);
if (arguments.length === 1 && goog.isDef(points)) {
this.setPoints(points);
}
};
goog.inherits(ol.geom.MultiPoint, ol.geom.Collection);

View File

@@ -25,6 +25,14 @@ describe("ol.geom.MultiPoint", function() {
expect( mp ).toBeA( ol.geom.MultiPoint );
});
it("cannot be constructed with component-types other than 'ol.geom.Point'", function() {
expect(function(){
mp = new ol.geom.MultiPoint([
new ol.geom.LineString()
]);
}).toThrow();
});
it("inherits from ol.geom.Geometry", function() {
expect( mp ).toBeA( ol.geom.Geometry );
});
@@ -84,6 +92,17 @@ describe("ol.geom.MultiPoint", function() {
});
it("can only add ol.geom.Point as components", function() {
expect(function(){
mp.addComponent(
new ol.geom.LineString([
new ol.geom.Point(30,40),
new ol.geom.Point(50,60)
])
);
}).toThrow();
});
it("has a method to remove points", function() {
mp.setPoints([
new ol.geom.Point(0,10),