leaflet-rd
Version:
Adds support for the Amersfoort / RD New coordinate system
85 lines (68 loc) • 2.55 kB
JavaScript
;
describe('L.Projection.RD', function() {
var rd = L.Projection.RD;
it('adds a projection', function() {
expect(rd).toBeDefined();
});
it('has an unproject method', function() {
expect(rd.unproject).toBeDefined();
});
it('has an project method', function() {
expect(rd.project).toBeDefined();
});
it('has bounds', function() {
expect(rd.bounds).toBeDefined();
});
it('projects to rd', function() {
var point = rd.project(L.latLng(52.225, 5.21));
expect(point.x).toBeCloseTo(142892.19);
expect(point.y).toBeCloseTo(470783.87);
});
it('unprojects to wgs84', function() {
var latLng = rd.unproject(L.point(142735.75, 470715.91));
expect(latLng.lng).toBeCloseTo(5.21);
expect(latLng.lat).toBeCloseTo(52.225);
});
it('it projects to wgs84 and back again', function() {
var latLng = rd.unproject(L.point(142735.75, 470715.91));
var point = rd.project(latLng)
expect(point.x).toBeCloseTo(142735.75);
expect(point.y).toBeCloseTo(470715.91);
});
it('it projects to rd and back again', function() {
var point = rd.project(L.latLng(52.225, 5.21));
var latLng = rd.unproject(point)
expect(latLng.lng).toBeCloseTo(5.21);
expect(latLng.lat).toBeCloseTo(52.225);
});
});
describe('L.CRS.RD', function() {
var rd = L.CRS.RD;
it('adds an crs', function () {
expect(rd).toBeDefined();
});
it('provides 16 predifined scale and zoom levels', function() {
for (var i = 0; i <= 16; i++) {
var scale = rd.scale(i)
expect(scale).toBeDefined();
expect(rd.zoom(scale)).toBeDefined();
};
});
it('provides scales for fractional zoom levels', function() {
for (var i = 0.5; i <= 15; i += 1) {
expect(rd.scale(i)).toBeCloseTo(1 / (3440.640 * Math.pow(0.5, i)));
}
});
it('provides zoom for scale levels', function() {
for (var i = 0; i <= 16; i++) {
var scale = rd.scale(i);
expect(rd.zoom(scale)).toBeCloseTo(Math.log((1/scale) / 3440.640) / (Math.log(0.5)));
};
})
it('transforms rd coordinates', function() {
expect(rd.transformation).toBeDefined();
var transformed = rd.transformation.transform(L.point(142735.75, 470715.91));
expect(transformed.x).toBeCloseTo(428137.67);
expect(transformed.y).toBeCloseTo(432686.01);
});
});