By having both the constructor and the setComponents checking a white- and a blacklist for allowed types, we ensure that no Collections can be added through these methods to the list of components.
136 lines
4.3 KiB
JavaScript
136 lines
4.3 KiB
JavaScript
describe("ol.geom.Collection", function() {
|
|
var c;
|
|
|
|
beforeEach(function(){
|
|
c = new ol.geom.Collection([
|
|
new ol.geom.Point(10,20),
|
|
new ol.geom.LineString([
|
|
new ol.geom.Point(47,11),
|
|
new ol.geom.Point(3.14,2.8)
|
|
])
|
|
]);
|
|
});
|
|
|
|
afterEach(function(){
|
|
c = null;
|
|
});
|
|
|
|
it("constructs instances", function() {
|
|
expect( c ).toBeA( ol.geom.Collection );
|
|
});
|
|
|
|
it("can construct instances without any components", function() {
|
|
// empty array
|
|
c = new ol.geom.Collection([]);
|
|
expect( c ).toBeA( ol.geom.Collection );
|
|
|
|
// no argument at all
|
|
c = new ol.geom.Collection();
|
|
expect( c ).toBeA( ol.geom.Collection );
|
|
});
|
|
|
|
it("cannot construct instances when passed illegal components", function() {
|
|
// collection cannot contain collections
|
|
expect(function(){
|
|
c = new ol.geom.Collection([
|
|
new ol.geom.Collection()
|
|
]);
|
|
}).toThrow();
|
|
|
|
});
|
|
|
|
it("inherits from ol.geom.Geometry", function() {
|
|
expect( c ).toBeA( ol.geom.Geometry );
|
|
});
|
|
|
|
it("has a working getter for components", function() {
|
|
|
|
var components = c.getComponents();
|
|
|
|
expect( components ).toBeA( Array );
|
|
expect( components.length ).toBe( 2 );
|
|
expect( components[0] ).toBeA( ol.geom.Point );
|
|
expect( components[1] ).toBeA( ol.geom.LineString );
|
|
|
|
expect( components[0].getX() + ',' + components[0].getY()).toBe( '10,20' );
|
|
expect( components[1].getVertices()[0].getX() + ',' + components[1].getVertices()[0].getY()).toBe( '47,11' );
|
|
|
|
});
|
|
|
|
it("has a working setter for components", function() {
|
|
|
|
c.setComponents([
|
|
new ol.geom.Point(30,40),
|
|
new ol.geom.LineString([
|
|
new ol.geom.Point(3,9),
|
|
new ol.geom.Point(4,16)
|
|
])
|
|
]);
|
|
|
|
var components = c.getComponents();
|
|
|
|
expect( components.length ).toBe( 2 );
|
|
expect( components[0] ).toBeA( ol.geom.Point );
|
|
expect( components[1] ).toBeA( ol.geom.LineString );
|
|
|
|
expect( components[0].getX() + ',' + components[0].getY()).toBe( '30,40' );
|
|
expect( components[1].getVertices()[0].getX() + ',' + components[1].getVertices()[0].getY()).toBe( '3,9' );
|
|
|
|
});
|
|
|
|
it("has a method to add components", function() {
|
|
|
|
c.addComponent(
|
|
new ol.geom.Point(30,40),
|
|
1
|
|
);
|
|
c.addComponent(
|
|
new ol.geom.LineString([
|
|
new ol.geom.Point(5,25),
|
|
new ol.geom.Point(6,36)
|
|
]),
|
|
0
|
|
);
|
|
|
|
var components = c.getComponents();
|
|
|
|
expect( components.length ).toBe( 4 );
|
|
expect( components[0].getVertices()[0].getX() + ',' + components[0].getVertices()[0].getY()).toBe( '5,25' );
|
|
expect( components[1].getX() + ',' + components[1].getY()).toBe( '10,20' );
|
|
expect( components[2].getX() + ',' + components[2].getY()).toBe( '30,40' );
|
|
expect( components[3].getVertices()[0].getX() + ',' + components[3].getVertices()[0].getY()).toBe( '47,11' );
|
|
|
|
});
|
|
|
|
it("cannot add instances of 'ol.geom.Collection'", function(){
|
|
expect(function(){
|
|
c.addComponent(
|
|
new ol.geom.Collection([
|
|
new ol.geom.Point(5,25),
|
|
new ol.geom.Point(6,36)
|
|
])
|
|
);
|
|
}).toThrow();
|
|
});
|
|
|
|
it("has a method to remove components", function() {
|
|
c.setComponents([
|
|
new ol.geom.Point(0,10),
|
|
new ol.geom.Point(10,20),
|
|
new ol.geom.Point(20,30),
|
|
new ol.geom.Point(30,40)
|
|
]);
|
|
|
|
var p = c.getComponents()[2]; // 20,30;
|
|
|
|
c.removeComponent( p );
|
|
|
|
var components = c.getComponents();
|
|
|
|
expect( components.length ).toBe( 3 );
|
|
expect( components[0].getX() + ',' + components[0].getY()).toBe( '0,10' );
|
|
expect( components[1].getX() + ',' + components[1].getY()).toBe( '10,20' );
|
|
expect( components[2].getX() + ',' + components[2].getY()).toBe( '30,40' );
|
|
});
|
|
});
|