UNPKG

gps-util

Version:
127 lines (122 loc) 3.89 kB
var assert = require('assert'); var gpx = require('../lib/gpx-parser.js'); var calc = require('../lib/calc.js'); var time = require('../lib/time'); var vows = require('vows'); vows.describe('Test suite for calc').addBatch({ 'Calculate speed and distance for gpx' : { 'topic' : function() { var self = this; gpx.gpxParseFile('./tests/data/calc_data.gpx', function(err, result) { calc.calculateFromGPX(result, function(err, result) { self.callback(err, result); }); }); }, 'expected result from calculateFromGPX' : function(err, result) { assert.equal(err, null); assert.equal(result.points.length, 20); assert.equal(result.averageSpeed, 4.450676859448075); assert.equal(result.fastestSpeed, 6.96311967571195); assert.equal(result.slowestSpeed, 1.7153931748868099); assert.equal(result.totalDistance, 396.11024049087865); assert.equal(result.totalTime, 89); assert.deepEqual(result.points[2], { lat : 59.18158857151866, lng : 17.673767544329166, ele : 33.400001525878906, time : new Date('2012-04-28T16:04:39.000Z'), speed : 4.221760443523958, distance : 34.83194761671427 }); /* Precision problem with v0.12 */ /* assert.deepEqual(result.points[18], { lat : 59.182679979130626, lng : 17.67968793399632, ele : 30.200000762939453, time : new Date('2012-04-28T16:05:54.000Z'), speed : 4.084766149733331, distance : 393.5258418687884 });*/ } }, 'Given 2 points in the test data set from gpx file' : { topic : function() { var self = this; gpx.gpxParseFile('./tests/data/calc_data.gpx', function(err, result) { calc.calculateFromGPX(result, function(err, result) { self.callback(err, result); }, 11, 14); }); }, 'expected new distance, total time and average speed' : function(err, result) { assert.equal(err, null); assert.equal(result.points.length, 4); assert.equal(result.averageSpeed, 4.616550632388868); assert.equal(result.fastestSpeed, 4.76741568467487); assert.equal(result.slowestSpeed, 4.412141843415082); assert.equal(result.totalDistance, 69.24825948583302); assert.equal(result.totalTime, 15); assert.deepEqual(result.points, [{ distance : 0, lat : 59.18222274631262, ele : 31.200000762939453, lng : 17.677201442420483, speed : 4.412141843415082, time : new Date('2012-04-28T16:05:21.000Z') }, { distance : 22.060709217075413, lat : 59.18229365721345, ele : 31.200000762939453, lng : 17.677563121542335, speed : 4.412141843415082, time : new Date('2012-04-28T16:05:26.000Z') }, { distance : 45.897787640449764, lat : 59.18236054480076, ele : 31.200000762939453, lng : 17.67796067520976, speed : 4.76741568467487, time : new Date('2012-04-28T16:05:31.000Z') }, { distance : 69.24825948583302, lat : 59.18242609128356, ele : 31.200000762939453, lng : 17.67835009843111, speed : 4.670094369076649, time : new Date('2012-04-28T16:05:36.000Z') }]); } }, 'Given same point in the test data set from gpx file' : { topic : function() { var self = this; gpx.gpxParseFile('./tests/data/calc_data.gpx', function(err, result) { calc.calculateFromGPX(result, function(err, result) { self.callback(err, result); }, 11, 11); }); }, 'expected an Error' : function(err, result) { assert.ok(err !== null); assert.ok(result === null); } }, 'Given one point test data set' : { topic : function() { calc.calculateFromGPX([{ lat : 59.18149243108928, lng : 17.673185924068093, ele : 33.400001525878906, time : new Date('2012-04-28T16:05:36.000Z'), speed : undefined, distance : undefined }], this.callback); }, 'expected an Error' : function(err, result) { assert.ok(err !== null); assert.ok(result === null); } } }).export(module);