@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
170 lines (169 loc) • 15.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const data_store_1 = require("./data.store");
const data_flow_1 = require("./data.flow");
const data_avg_flow_1 = require("./data.avg-flow");
const data_grit_1 = require("./data.grit");
const data_avg_grit_1 = require("./data.avg-grit");
const data_vertical_oscillation_1 = require("./data.vertical-oscillation");
const data_vertical_oscillation_avg_1 = require("./data.vertical-oscillation-avg");
const data_vertical_oscillation_min_1 = require("./data.vertical-oscillation-min");
const data_vertical_oscillation_max_1 = require("./data.vertical-oscillation-max");
const data_vertical_speed_1 = require("./data.vertical-speed");
const data_vertical_speed_avg_1 = require("./data.vertical-speed-avg");
const data_vertical_speed_min_1 = require("./data.vertical-speed-min");
const data_vertical_speed_max_1 = require("./data.vertical-speed-max");
const data_jump_distance_1 = require("./data.jump-distance");
const data_distance_1 = require("./data.distance");
const data_gnss_distance_1 = require("./data.gnss-distance");
const data_gnss_distance_miles_1 = require("./data.gnss-distance-miles");
const data_auto_lap_distance_1 = require("./data.auto-lap-distance");
const data_avg_stroke_distance_1 = require("./data.avg-stroke-distance");
const data_avg_stride_length_1 = require("./data.avg-stride-length");
const data_step_length_1 = require("./data.step-length");
const data_target_distance_1 = require("./data.target-distance");
const data_stryd_distance_1 = require("./data.stryd-distance");
const data_jump_stats_1 = require("./data.jump-stats");
const getBaseTypeFromStatType = (type) => type.replace(/^(Average|Minimum|Maximum)\s+/i, '');
describe('DynamicDataLoader family mappings', () => {
it('maps Flow and Grit to average families', () => {
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_flow_1.DataFlow.type]).toBe(data_avg_flow_1.DataAvgFlow.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_grit_1.DataGrit.type]).toBe(data_avg_grit_1.DataAvgGrit.type);
});
it('maps Vertical Oscillation family to avg/min/max canonical names', () => {
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_oscillation_1.DataVerticalOscillation.type]).toBe(data_vertical_oscillation_avg_1.DataVerticalOscillationAvg.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_oscillation_1.DataVerticalOscillation.type]).toBe(data_vertical_oscillation_min_1.DataVerticalOscillationMin.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_oscillation_1.DataVerticalOscillation.type]).toBe(data_vertical_oscillation_max_1.DataVerticalOscillationMax.type);
});
it('maps Vertical Speed family and unit-derived variants to avg/min/max canonical names', () => {
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_speed_1.DataVerticalSpeed.type]).toBe(data_vertical_speed_avg_1.DataVerticalSpeedAvg.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_speed_1.DataVerticalSpeed.type]).toBe(data_vertical_speed_min_1.DataVerticalSpeedMin.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_speed_1.DataVerticalSpeed.type]).toBe(data_vertical_speed_max_1.DataVerticalSpeedMax.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerSecond.type]).toBe(data_vertical_speed_avg_1.DataVerticalSpeedAvgFeetPerSecond.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerSecond.type]).toBe(data_vertical_speed_min_1.DataVerticalSpeedMinFeetPerSecond.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerSecond.type]).toBe(data_vertical_speed_max_1.DataVerticalSpeedMaxFeetPerSecond.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_speed_1.DataVerticalSpeedMetersPerMinute.type]).toBe(data_vertical_speed_avg_1.DataVerticalSpeedAvgMetersPerMinute.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_speed_1.DataVerticalSpeedMetersPerMinute.type]).toBe(data_vertical_speed_min_1.DataVerticalSpeedMinMetersPerMinute.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_speed_1.DataVerticalSpeedMetersPerMinute.type]).toBe(data_vertical_speed_max_1.DataVerticalSpeedMaxMetersPerMinute.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerMinute.type]).toBe(data_vertical_speed_avg_1.DataVerticalSpeedAvgFeetPerMinute.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerMinute.type]).toBe(data_vertical_speed_min_1.DataVerticalSpeedMinFeetPerMinute.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerMinute.type]).toBe(data_vertical_speed_max_1.DataVerticalSpeedMaxFeetPerMinute.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_speed_1.DataVerticalSpeedMetersPerHour.type]).toBe(data_vertical_speed_avg_1.DataVerticalSpeedAvgMetersPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_speed_1.DataVerticalSpeedMetersPerHour.type]).toBe(data_vertical_speed_min_1.DataVerticalSpeedMinMetersPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_speed_1.DataVerticalSpeedMetersPerHour.type]).toBe(data_vertical_speed_max_1.DataVerticalSpeedMaxMetersPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerHour.type]).toBe(data_vertical_speed_avg_1.DataVerticalSpeedAvgFeetPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerHour.type]).toBe(data_vertical_speed_min_1.DataVerticalSpeedMinFeetPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_speed_1.DataVerticalSpeedFeetPerHour.type]).toBe(data_vertical_speed_max_1.DataVerticalSpeedMaxFeetPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_speed_1.DataVerticalSpeedKilometerPerHour.type]).toBe(data_vertical_speed_avg_1.DataVerticalSpeedAvgKilometerPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_speed_1.DataVerticalSpeedKilometerPerHour.type]).toBe(data_vertical_speed_min_1.DataVerticalSpeedMinKilometerPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_speed_1.DataVerticalSpeedKilometerPerHour.type]).toBe(data_vertical_speed_max_1.DataVerticalSpeedMaxKilometerPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_vertical_speed_1.DataVerticalSpeedMilesPerHour.type]).toBe(data_vertical_speed_avg_1.DataVerticalSpeedAvgMilesPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_vertical_speed_1.DataVerticalSpeedMilesPerHour.type]).toBe(data_vertical_speed_min_1.DataVerticalSpeedMinMilesPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_vertical_speed_1.DataVerticalSpeedMilesPerHour.type]).toBe(data_vertical_speed_max_1.DataVerticalSpeedMaxMilesPerHour.type);
});
it('maps Jump Distance family to avg/min/max canonical names', () => {
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[data_jump_distance_1.DataJumpDistance.type]).toBe(data_jump_stats_1.DataJumpDistanceAvg.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[data_jump_distance_1.DataJumpDistance.type]).toBe(data_jump_stats_1.DataJumpDistanceMin.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[data_jump_distance_1.DataJumpDistance.type]).toBe(data_jump_stats_1.DataJumpDistanceMax.type);
});
it('maps all jump families to avg/min/max canonical names', () => {
const jumpFamilyMappings = [
{
base: data_jump_distance_1.DataJumpDistance.type,
avg: data_jump_stats_1.DataJumpDistanceAvg.type,
min: data_jump_stats_1.DataJumpDistanceMin.type,
max: data_jump_stats_1.DataJumpDistanceMax.type
},
{
base: 'Jump Hang Time',
avg: data_jump_stats_1.DataJumpHangTimeAvg.type,
min: data_jump_stats_1.DataJumpHangTimeMin.type,
max: data_jump_stats_1.DataJumpHangTimeMax.type
},
{
base: 'Jump Height',
avg: data_jump_stats_1.DataJumpHeightAvg.type,
min: data_jump_stats_1.DataJumpHeightMin.type,
max: data_jump_stats_1.DataJumpHeightMax.type
},
{
base: 'Jump Speed',
avg: data_jump_stats_1.DataJumpSpeedAvg.type,
min: data_jump_stats_1.DataJumpSpeedMin.type,
max: data_jump_stats_1.DataJumpSpeedMax.type
},
{
base: 'Jump Rotations',
avg: data_jump_stats_1.DataJumpRotationsAvg.type,
min: data_jump_stats_1.DataJumpRotationsMin.type,
max: data_jump_stats_1.DataJumpRotationsMax.type
},
{
base: 'Jump Score',
avg: data_jump_stats_1.DataJumpScoreAvg.type,
min: data_jump_stats_1.DataJumpScoreMin.type,
max: data_jump_stats_1.DataJumpScoreMax.type
}
];
jumpFamilyMappings.forEach(({ base, avg, min, max }) => {
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[base]).toBe(avg);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[base]).toBe(min);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[base]).toBe(max);
});
});
it('maps jump speed families in unit groups to jump-specific unit targets', () => {
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedAvg.type][data_jump_stats_1.DataJumpSpeedAvgKilometersPerHour.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedAvg.type][data_jump_stats_1.DataJumpSpeedAvgMilesPerHour.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedAvg.type][data_jump_stats_1.DataJumpSpeedAvgFeetPerSecond.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedAvg.type][data_jump_stats_1.DataJumpSpeedAvgKnots.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedMin.type][data_jump_stats_1.DataJumpSpeedMinKilometersPerHour.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedMin.type][data_jump_stats_1.DataJumpSpeedMinMilesPerHour.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedMin.type][data_jump_stats_1.DataJumpSpeedMinFeetPerSecond.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedMin.type][data_jump_stats_1.DataJumpSpeedMinKnots.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedMax.type][data_jump_stats_1.DataJumpSpeedMaxKilometersPerHour.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedMax.type][data_jump_stats_1.DataJumpSpeedMaxMilesPerHour.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedMax.type][data_jump_stats_1.DataJumpSpeedMaxFeetPerSecond.type]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[data_jump_stats_1.DataJumpSpeedMax.type][data_jump_stats_1.DataJumpSpeedMaxKnots.type]).toBeDefined();
});
it('maps jump speed unit-derived families to jump-specific avg/min/max variants', () => {
const jumpSpeedMphBaseType = getBaseTypeFromStatType(data_jump_stats_1.DataJumpSpeedAvgMilesPerHour.type);
const jumpSpeedKphBaseType = getBaseTypeFromStatType(data_jump_stats_1.DataJumpSpeedAvgKilometersPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[jumpSpeedMphBaseType]).toBe(data_jump_stats_1.DataJumpSpeedAvgMilesPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[jumpSpeedMphBaseType]).toBe(data_jump_stats_1.DataJumpSpeedMinMilesPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[jumpSpeedMphBaseType]).toBe(data_jump_stats_1.DataJumpSpeedMaxMilesPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeAvgDataType[jumpSpeedKphBaseType]).toBe(data_jump_stats_1.DataJumpSpeedAvgKilometersPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMinDataType[jumpSpeedKphBaseType]).toBe(data_jump_stats_1.DataJumpSpeedMinKilometersPerHour.type);
expect(data_store_1.DynamicDataLoader.dataTypeMaxDataType[jumpSpeedKphBaseType]).toBe(data_jump_stats_1.DataJumpSpeedMaxKilometersPerHour.type);
});
it('maps jump distance family in unit groups to feet conversion targets', () => {
const jumpDistanceFamilyTypes = [
data_jump_distance_1.DataJumpDistance.type,
data_jump_stats_1.DataJumpDistanceMin.type,
data_jump_stats_1.DataJumpDistanceMax.type,
data_jump_stats_1.DataJumpDistanceAvg.type
];
jumpDistanceFamilyTypes.forEach(jumpDistanceType => {
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[jumpDistanceType]).toBeDefined();
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[jumpDistanceType][data_distance_1.DataDistanceFeet.type]).toBeDefined();
});
});
it('maps all distance-derived families in unit groups to miles conversion targets', () => {
const mappedDistanceTypes = [
data_distance_1.DataDistance.type,
data_gnss_distance_1.DataGNSSDistance.type,
data_auto_lap_distance_1.DataAutoLapDistance.type,
data_avg_stroke_distance_1.DataAvgStrokeDistance.type,
data_avg_stride_length_1.DataAvgStrideLength.type,
data_step_length_1.DataStepLength.type,
data_target_distance_1.DataTargetDistance.type,
data_stryd_distance_1.DataStrydDistance.type
];
mappedDistanceTypes.forEach(distanceType => {
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[distanceType]).toBeDefined();
const expectedMilesDistanceType = distanceType === data_gnss_distance_1.DataGNSSDistance.type
? data_gnss_distance_miles_1.DataGNSSDistanceMiles.type
: data_distance_1.DataDistanceMiles.type;
expect(data_store_1.DynamicDataLoader.dataTypeUnitGroups[distanceType][expectedMilesDistanceType]).toBeDefined();
});
});
});