UNPKG

openlayers

Version:

Build tools and sources for developing OpenLayers based mapping applications

236 lines (207 loc) 7.74 kB
goog.provide('ol.test.coordinate'); goog.require('ol.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]; var bonn1 = [50.73, 7.1]; var bonn2 = [50.73000, 7.10000]; it('compares correctly', function() { var bonnEqualsBonn = ol.coordinate.equals(bonn1, bonn2); var 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('#format', function() { it('can deal with undefined coordinate', function() { expect(ol.coordinate.format()).to.be(''); }); it('formats a coordinate into a template (default precision is 0)', function() { var coord = [7.85, 47.983333]; var template = 'Coordinate is ({x}|{y}).'; var got = ol.coordinate.format(coord, template); var expected = 'Coordinate is (8|48).'; expect(got).to.be(expected); }); it('formats a coordinate into a template and respects precision)', function() { var coord = [7.85, 47.983333]; var template = 'Coordinate is ({x}|{y}).'; var got = ol.coordinate.format(coord, template, 2); var expected = 'Coordinate is (7.85|47.98).'; expect(got).to.be(expected); }); }); describe('#rotate', function() { it('can rotate point in place', function() { var coord = [7.85, 47.983333]; var rotateRadians = Math.PI / 2; // 90 degrees ol.coordinate.rotate(coord, rotateRadians); expect(coord[0].toFixed(6)).to.eql('-47.983333'); expect(coord[1].toFixed(6)).to.eql('7.850000'); }); it('returns the rotated point', function() { var coord = [7.85, 47.983333]; var rotateRadians = Math.PI / 2; // 90 degrees var rotated = ol.coordinate.rotate(coord, rotateRadians); expect(rotated[0].toFixed(7)).to.eql('-47.9833330'); expect(rotated[1].toFixed(7)).to.eql('7.8500000'); }); }); describe('#scale', function() { it('can scale point in place', function() { var coord = [7.85, 47.983333]; var scale = 1.2; ol.coordinate.scale(coord, scale); expect(coord[0].toFixed(7)).to.eql('9.4200000'); expect(coord[1].toFixed(7)).to.eql('57.5799996'); }); it('returns the scaled point', function() { var coord = [7.85, 47.983333]; var scale = 1.2; var scaledCoord = ol.coordinate.scale(coord, scale); expect(scaledCoord[0].toFixed(7)).to.eql('9.4200000'); expect(scaledCoord[1].toFixed(7)).to.eql('57.5799996'); }); }); describe('#sub', function() { it('can subtract from point in place', function() { var coord = [47, 11]; var delta = [1, -1]; ol.coordinate.sub(coord, delta); expect(coord[0]).to.eql(46); expect(coord[1]).to.eql(12); }); it('can subtract from point in place', function() { var coord = [47, 11]; var delta = [1, -1]; var subtracted = ol.coordinate.sub(coord, delta); expect(subtracted[0]).to.eql(46); expect(subtracted[1]).to.eql(12); }); }); 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); }); }); describe('#toStringHDMS', function() { it('returns the empty string on undefined input', function() { var got = ol.coordinate.toStringHDMS(); var expected = ''; expect(got).to.be(expected); }); it('formats with zero fractional digits as default', function() { var coord = [7.85, 47.983333]; var got = ol.coordinate.toStringHDMS(coord); var expected = '47° 58′ 60″ N 7° 50′ 60″ E'; expect(got).to.be(expected); }); it('formats with given fractional digits, if passed', function() { var coord = [7.85, 47.983333]; var got = ol.coordinate.toStringHDMS(coord, 3); var expected = '47° 58′ 59.999″ N 7° 50′ 60.000″ E'; expect(got).to.be(expected); }); }); describe('#toStringXY', function() { it('formats with zero fractional digits as default', function() { var coord = [7.85, 47.983333]; var got = ol.coordinate.toStringXY(coord); var expected = '8, 48'; expect(got).to.be(expected); }); it('formats with given fractional digits, if passed', function() { var coord = [7.85, 47.983333]; var got = ol.coordinate.toStringXY(coord, 2); var expected = '7.85, 47.98'; expect(got).to.be(expected); }); }); });