Files
openlayers/test/spec/ol/coordinate.test.js
2014-07-01 17:02:34 +02:00

130 lines
3.7 KiB
JavaScript

goog.provide('ol.test.coordinate');
describe('ol.coordinate', function() {
describe('#add', function() {
var coordinate,
delta;
beforeEach(function() {
coordinate = [50.73, 7.1];
delta = [-2, 3];
});
it('returns a coordinate', function() {
var returnedCoordinate = ol.coordinate.add(coordinate, delta);
expect(returnedCoordinate).to.be.an('array');
expect(returnedCoordinate).to.have.length(2);
});
it('adds the delta', function() {
var returnedCoordinate = ol.coordinate.add(coordinate, delta);
expect(returnedCoordinate[0]).to.eql(48.73);
expect(returnedCoordinate[1]).to.eql(10.1);
});
it('modifies in place', function() {
ol.coordinate.add(coordinate, delta);
expect(coordinate[0]).to.eql(48.73);
expect(coordinate[1]).to.eql(10.1);
});
});
describe('#equals', function() {
var cologne = [50.93333, 6.95],
bonn1 = [50.73, 7.1],
bonn2 = [50.73000, 7.10000];
it('compares correctly', function() {
var bonnEqualsBonn = ol.coordinate.equals(bonn1, bonn2),
bonnEqualsCologne = ol.coordinate.equals(bonn1, cologne);
expect(bonnEqualsBonn).to.be(true);
expect(bonnEqualsCologne).to.be(false);
});
});
describe('#format', function() {
var coordinate;
beforeEach(function() {
coordinate = [6.6123, 46.7919];
});
it('rounds the values', function() {
var string = ol.coordinate.format(coordinate, '{x} {y}', 0);
expect(string).to.eql('7 47');
});
it('handles the optional fractionDigits param', function() {
var string = ol.coordinate.format(coordinate, '{x} {y}', 3);
expect(string).to.eql('6.612 46.792');
});
});
describe('#createStringXY', function() {
var coordinate,
created,
formatted;
beforeEach(function() {
coordinate = [6.6123, 46.7919];
created = null;
formatted = null;
});
it('returns a CoordinateFormatType', function() {
created = ol.coordinate.createStringXY();
expect(created).to.be.a('function');
formatted = created(coordinate);
expect(formatted).to.be.a('string');
expect(formatted).to.eql('7, 47');
});
it('respects opt_fractionDigits', function() {
created = ol.coordinate.createStringXY(3);
expect(created).to.be.a('function');
formatted = created(coordinate);
expect(formatted).to.be.a('string');
expect(formatted).to.eql('6.612, 46.792');
});
});
describe('#closestOnSegment', function() {
it('can handle points where the foot of the perpendicular is closest',
function() {
var point = [2, 5];
var segment = [[-5, 0], [10, 0]];
expect(ol.coordinate.closestOnSegment(point, segment))
.to.eql([2, 0]);
});
it('can handle points where the foot of the perpendicular is not closest',
function() {
var point = [0, -6];
var segment = [[-5, 0], [0, -1]];
expect(ol.coordinate.closestOnSegment(point, segment))
.to.eql([0, -1]);
});
});
describe('#squaredDistanceToSegment', function() {
it('can handle points where the foot of the perpendicular is closest',
function() {
var point = [2, 5];
var segment = [[-5, 0], [10, 0]];
expect(ol.coordinate.squaredDistanceToSegment(point, segment))
.to.eql(25);
});
it('can handle points where the foot of the perpendicular is not closest',
function() {
var point = [0, -6];
var segment = [[-5, 0], [0, -1]];
expect(ol.coordinate.squaredDistanceToSegment(point, segment))
.to.eql(25);
});
});
});
goog.require('ol.coordinate');