@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
JavaScript
;
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);
});
});