@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
47 lines (46 loc) • 2.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const importer_fit_1 = require("./importer.fit");
const activity_1 = require("../../../../activities/activity");
const activity_types_1 = require("../../../../activities/activity.types");
const creator_1 = require("../../../../creators/creator");
const data_duration_1 = require("../../../../data/data.duration");
const data_elapsed_time_1 = require("../../../../data/data.elapsed-time");
const data_timer_time_1 = require("../../../../data/data.timer-time");
describe('EventImporterFIT duration policy', () => {
let mockActivity;
beforeEach(() => {
mockActivity = new activity_1.Activity(new Date(), new Date(Date.now() + 60000), activity_types_1.ActivityTypes.Cycling, new creator_1.Creator('Test'));
});
const getStatValue = (stats, type) => {
var _a;
return (_a = stats.find(stat => stat.getType() === type)) === null || _a === void 0 ? void 0 : _a.getValue();
};
it('uses timer time as Duration and keeps elapsed time as a dedicated stat', () => {
const stats = importer_fit_1.EventImporterFIT.getStatsFromObject({
total_elapsed_time: 20436.242,
total_timer_time: 13705.229
}, mockActivity, false);
expect(getStatValue(stats, data_duration_1.DataDuration.type)).toBe(13705.23);
expect(getStatValue(stats, data_timer_time_1.DataTimerTime.type)).toBe(13705.23);
expect(getStatValue(stats, data_elapsed_time_1.DataElapsedTime.type)).toBe(20436.24);
});
it('clamps tiny timer > elapsed discrepancies as rounding noise instead of swapping', () => {
const stats = importer_fit_1.EventImporterFIT.getStatsFromObject({
total_elapsed_time: 4077.19,
total_timer_time: 4077.392
}, mockActivity, false);
expect(getStatValue(stats, data_duration_1.DataDuration.type)).toBe(4077.19);
expect(getStatValue(stats, data_timer_time_1.DataTimerTime.type)).toBe(4077.19);
expect(getStatValue(stats, data_elapsed_time_1.DataElapsedTime.type)).toBe(4077.19);
});
it('swaps materially inverted elapsed/timer values from broken FIT files', () => {
const stats = importer_fit_1.EventImporterFIT.getStatsFromObject({
total_elapsed_time: 100,
total_timer_time: 120
}, mockActivity, false);
expect(getStatValue(stats, data_duration_1.DataDuration.type)).toBe(100);
expect(getStatValue(stats, data_timer_time_1.DataTimerTime.type)).toBe(100);
expect(getStatValue(stats, data_elapsed_time_1.DataElapsedTime.type)).toBe(120);
});
});