diff --git a/test/geo.test.js b/test/geo.test.js new file mode 100644 index 00000000..9dbf52d0 --- /dev/null +++ b/test/geo.test.js @@ -0,0 +1,57 @@ +/*global describe,it*/ +/*jshint expr:true*/ + +require('should'); + +var GeoPoint = require('../lib/geo').GeoPoint; + +describe('GeoPoint', function () { + describe('distance calculation between two points', function () { + + var here = new GeoPoint({ lat: 40.77492964101182, lng: -73.90950187151662 }); + var there = new GeoPoint({ lat: 40.7753227, lng: -73.909217 }); + + it('should return value in miles by default', function () { + + var distance = GeoPoint.distanceBetween(here, there); + distance.should.be.a.Number; + distance.should.equal(0.03097916611592679); + }); + + it('should return value using specified unit', function () { + + /* Supported units: + * - `radians` + * - `kilometers` + * - `meters` + * - `miles` + * - `feet` + * - `degrees` + */ + + var distance = here.distanceTo(there, { type: 'radians'}); + distance.should.be.a.Number; + distance.should.equal(0.000007825491914348416); + + distance = here.distanceTo(there, { type: 'kilometers'}); + distance.should.be.a.Number; + distance.should.equal(0.04985613511367009); + + distance = here.distanceTo(there, { type: 'meters'}); + distance.should.be.a.Number; + distance.should.equal(49.856135113670085); + + distance = here.distanceTo(there, { type: 'miles'}); + distance.should.be.a.Number; + distance.should.equal(0.03097916611592679); + + distance = here.distanceTo(there, { type: 'feet'}); + distance.should.be.a.Number; + distance.should.equal(163.56999709209347); + + distance = here.distanceTo(there, { type: 'degrees'}); + distance.should.be.a.Number; + distance.should.equal(0.0004483676593058972); + }); + }); +});