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

34 lines (33 loc) 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const data_altitude_1 = require("../data/data.altitude"); const data_altitude_smooth_1 = require("../data/data.altitude-smooth"); const data_distance_1 = require("../data/data.distance"); const data_grade_1 = require("../data/data.grade"); const data_pace_1 = require("../data/data.pace"); const data_speed_1 = require("../data/data.speed"); const stream_derivation_registry_1 = require("./stream.derivation.registry"); describe('stream.derivation.registry', () => { it('should expose unique targets', () => { const rules = (0, stream_derivation_registry_1.getStreamDerivationRules)(); const targets = new Set(rules.map(rule => rule.provides)); expect(targets.size).toBe(rules.length); }); it('should define Pace dependency on Speed', () => { const rule = (0, stream_derivation_registry_1.getStreamDerivationRule)(data_pace_1.DataPace.type); expect(rule).not.toBeNull(); expect(rule === null || rule === void 0 ? void 0 : rule.requiresAll).toEqual([data_speed_1.DataSpeed.type]); }); it('should resolve Grade dependencies including one-of candidates', () => { const dependencies = new Set((0, stream_derivation_registry_1.getDependencyTypesForResolution)(data_grade_1.DataGrade.type)); expect(dependencies).toEqual(new Set([data_distance_1.DataDistance.type, data_altitude_1.DataAltitude.type, data_altitude_smooth_1.DataAltitudeSmooth.type])); }); it('should allow deriving Grade when one-of requirement is satisfied', () => { expect((0, stream_derivation_registry_1.canDeriveStreamType)(data_grade_1.DataGrade.type, streamType => { return streamType === data_distance_1.DataDistance.type || streamType === data_altitude_1.DataAltitude.type; })).toBe(true); expect((0, stream_derivation_registry_1.canDeriveStreamType)(data_grade_1.DataGrade.type, streamType => { return streamType === data_distance_1.DataDistance.type; })).toBe(false); }); });