UNPKG

@sports-alliance/sports-lib

Version:

A Library to for importing / exporting and processing GPX, TCX, FIT and JSON files from services such as Strava, Movescount, Garmin, Polar etc

97 lines (96 loc) 4.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const data_ibi_1 = require("./data.ibi"); describe('Data IBI', function () { let ibiData; beforeEach(() => { ibiData = new data_ibi_1.IBIData([600, 700, 800, 900]); }); it('should get the correct data map', function () { const expectedResult = new Map(); expectedResult.set(600, 600); expectedResult.set(1300, 700); expectedResult.set(2100, 800); expectedResult.set(3000, 900); expect(ibiData.getIBIDataMap()).toEqual(expectedResult); }); it('should convert correctly to heart rate by Math.Round', function () { const expectedResult = new Map(); expectedResult.set(600, Math.round(60000 / 600)); expectedResult.set(1300, Math.round(60000 / 700)); expectedResult.set(2100, Math.round(60000 / 800)); expectedResult.set(3000, Math.round(60000 / 900)); expect(ibiData.getAsBPM()).toEqual(expectedResult); }); it('should filter all bpm above 80', function () { const expectedResult = new Map(); expectedResult.set(600, Math.round(60000 / 600)); expectedResult.set(1300, Math.round(60000 / 700)); expectedResult.set(2100, Math.round(60000 / 800)); expectedResult.set(3000, Math.round(60000 / 900)); expect(ibiData.getAsBPM()).toEqual(expectedResult); }); it('should remove all bpm above 80', function () { const expectedResult = new Map(); expectedResult.set(2100, Math.round(60000 / 800)); // 75 expectedResult.set(3000, Math.round(60000 / 900)); // 66 ibiData.highLimitBPMFilter(80); expect(ibiData.getAsBPM()).toEqual(expectedResult); }); it('should remove all bpm below 80', function () { const expectedResult = new Map(); ibiData.lowLimitBPMFilter(80); expectedResult.set(600, Math.round(60000 / 600)); // 100 expectedResult.set(1300, Math.round(60000 / 700)); // 85 expect(ibiData.getAsBPM()).toEqual(expectedResult); }); it('should apply a low pass filter', function () { const expectedResult = new Map(); expectedResult.set(600, 100); expectedResult.set(1300, 92); expectedResult.set(2100, 86); expectedResult.set(3000, 80); ibiData.lowPassFilter(); expect(ibiData.getAsBPM()).toEqual(expectedResult); }); it('should apply a moving median filter', function () { const expectedResult = new Map(); expectedResult.set(600, 100); expectedResult.set(1300, 92); expectedResult.set(2100, 86); expectedResult.set(3000, 80); ibiData.movingMedianFilter(); expect(ibiData.getAsBPM()).toEqual(expectedResult); }); it('should export correctly to JSON', function () { expect(ibiData.toJSON()).toEqual([ { time: 600, ibi: 600 }, { time: 1300, ibi: 700 }, { time: 2100, ibi: 800 }, { time: 3000, ibi: 900 } ]); }); it('should round-trip filtered data without losing preserved elapsed timestamps', function () { ibiData.highLimitBPMFilter(80); const roundTripped = new data_ibi_1.IBIData(ibiData.toJSON()); const expectedResult = new Map(); expectedResult.set(2100, 800); expectedResult.set(3000, 900); expect(roundTripped.getIBIDataMap()).toEqual(expectedResult); expect(roundTripped.toJSON()).toEqual([ { time: 2100, ibi: 800 }, { time: 3000, ibi: 900 } ]); }); it('should hydrate correctly from timestamp-preserving JSON entries', function () { const roundTripped = new data_ibi_1.IBIData([ { time: 2100, ibi: 800 }, { time: 3000, ibi: 900 } ]); const expectedResult = new Map(); expectedResult.set(2100, 800); expectedResult.set(3000, 900); expect(roundTripped.getIBIDataMap()).toEqual(expectedResult); expect(roundTripped.getAsArray()).toEqual([800, 900]); }); });