Files
openlayers/test/spec/ol/geom/Collection.test.js
2012-06-22 16:26:19 +02:00

136 lines
4.1 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' );
});
});