Splitting tests between api and internal.

This commit is contained in:
Tim Schaub
2012-06-20 11:56:20 +02:00
parent a7a86bb169
commit 14b1a34f98
7 changed files with 38 additions and 37 deletions

126
test/spec/api/loc.test.js Normal file
View File

@@ -0,0 +1,126 @@
describe("ol.loc", function() {
it("allows empty construction", function() {
var loc;
// nowhere
loc = ol.loc();
expect(loc).toBeA(ol.Loc);
});
it("allows construction from an obj config", function() {
var loc;
// obj config
loc = ol.loc({x: 10, y: 20});
expect(loc.x()).toBe(10);
expect(loc.y()).toBe(20);
});
it("allows construction from an array config", function() {
var loc;
// array config
loc = ol.loc([30, 40]);
expect(loc.x()).toBe(30);
expect(loc.y()).toBe(40);
});
it("accounts for the third dimension", function() {
var loc;
// obj config
loc = ol.loc({x: 10, y: 20, z: 30});
expect(loc.z()).toBe(30);
// array config
loc = ol.loc([40, 50, 60]);
expect(loc.z()).toBe(60);
});
it("is mutable", function() {
var loc = ol.loc({x: 10, y: 20, z: 15});
loc.z(30);
expect(loc.x()).toBe(10);
expect(loc.y()).toBe(20);
expect(loc.z()).toBe(30);
});
it("has no default projection", function() {
var loc = ol.loc({x: 1, y: 2});
expect(loc.projection()).toBeUndefined();
});
it("allows projection to be set", function() {
var proj;
// at construction
var loc = ol.loc({x: 1, y: 2, projection: "EPSG:4326"});
proj = loc.projection();
expect(proj).toBeA(ol.Projection);
expect(proj.code()).toBe("EPSG:4326");
// after construction
loc.projection("EPSG:3857");
expect(loc.projection().code()).toBe("EPSG:3857");
// setting projection does not transform coordinates
expect(loc.x()).toBe(1);
expect(loc.y()).toBe(2);
});
it("can be transformed (to mercator)", function() {
var loc = ol.loc({x: 10, y: 20, projection: "EPSG:4326"});
var trans = loc.transform("EPSG:3857");
expect(trans).toBeA(ol.Loc);
expect(trans.projection().code()).toBe("EPSG:3857");
expect(trans.x().toFixed(3)).toBe("1113194.908");
expect(trans.y().toFixed(3)).toBe("2273030.927");
expect(loc.x().toFixed(3)).toBe("10.000");
expect(loc.y().toFixed(3)).toBe("20.000");
});
it("can be transformed (to geographic)", function() {
var loc = ol.loc({x: 1113195, y: 2273031, projection: "EPSG:3857"});
var trans = loc.transform("EPSG:4326");
expect(trans).toBeA(ol.Loc);
expect(trans.projection().code()).toBe("EPSG:4326");
expect(trans.x().toFixed(3)).toBe("10.000");
expect(trans.y().toFixed(3)).toBe("20.000");
});
it("should not be transformable if it has no projection", function() {
var loc = ol.loc([1, 2]);
expect(function() {
loc.transform("EPSG:4326");
}).toThrow();
});
it("is destroyable", function() {
var loc = ol.loc([1, 2]);
loc.destroy();
});
});