diff --git a/test/spec/ol/coordinate.test.js b/test/spec/ol/coordinate.test.js index e5168a5ea5..5914fe15c0 100644 --- a/test/spec/ol/coordinate.test.js +++ b/test/spec/ol/coordinate.test.js @@ -106,6 +106,79 @@ describe('ol.coordinate', function() { }); }); + 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() { @@ -124,6 +197,53 @@ describe('ol.coordinate', function() { }); + 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 a coord as expected', function() { + var coord = [7.85, 47.983333]; + var got = ol.coordinate.toStringHDMS(coord); + var expected = '47° 59′ 0″ N 7° 51′ 0″ 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); + }); + }); + + describe('#fromProjectedArray', function() { + it('returns an inverted coord for "n" or "s"', function() { + var northCoord = ol.coordinate.fromProjectedArray([1, 2], 'n'); + var southCoord = ol.coordinate.fromProjectedArray([1, 2], 's'); + expect(northCoord).to.eql([2, 1]); + expect(southCoord).to.eql([2, 1]); + }); + it('returns an unchanged coord for any other "axis"', function() { + var eastCoord = ol.coordinate.fromProjectedArray([1, 2], 'e'); + var westCoord = ol.coordinate.fromProjectedArray([1, 2], 'w'); + var bogusCoord = ol.coordinate.fromProjectedArray([1, 2], 'q'); + var unchangedCoord = ol.coordinate.fromProjectedArray([1, 2], ''); + expect(eastCoord).to.eql([1, 2]); + expect(westCoord).to.eql([1, 2]); + expect(bogusCoord).to.eql([1, 2]); + expect(unchangedCoord).to.eql([1, 2]); + }); + }); }); goog.require('ol.coordinate');