@kaiord/core / validateRoundTrip
Function: validateRoundTrip()
validateRoundTrip(
binaryReader,binaryWriter,toleranceChecker,logger):object
Defined in: packages/core/src/tests/round-trip/validate-round-trip.ts:105
Validates round-trip conversion between FIT and KRD formats.
This use case provides two validation methods to ensure data integrity during bidirectional conversions, checking that values remain within acceptable tolerances.
Default tolerances:
- Time: ±1 second
- Power: ±1 watt or ±1% FTP
- Heart rate: ±1 BPM
- Cadence: ±1 RPM
Parameters
binaryReader
FIT file reader implementation
binaryWriter
FIT file writer implementation
toleranceChecker
Tolerance checker with configured thresholds
logger
Logger for operation tracking
Returns
object
An object with validation methods for both round-trip directions
validateFitToKrdToFit
validateFitToKrdToFit: (
params) =>Promise<object[]>
Parameters
params
ValidateFitToKrdToFitParams
Returns
Promise<object[]>
validateKrdToFitToKrd
validateKrdToFitToKrd: (
params) =>Promise<object[]>
Parameters
params
ValidateKrdToFitToKrdParams
Returns
Promise<object[]>
Examples
import { validateRoundTrip, createDefaultProviders, DEFAULT_TOLERANCES } from '@kaiord/core';
import { readFileSync } from 'fs';
const providers = createDefaultProviders();
const validator = validateRoundTrip(
providers.binaryReader,
providers.binaryWriter,
providers.toleranceChecker,
providers.logger
);
// Validate FIT → KRD → FIT
const fitBuffer = readFileSync('workout.fit');
const violations = await validator.validateFitToKrdToFit({
originalFit: fitBuffer
});
if (violations.length > 0) {
console.error('Round-trip validation failed:');
violations.forEach(v => {
console.error(` ${v.field}: expected ${v.expected}, got ${v.actual}`);
});
}// Validate KRD → FIT → KRD
const krd = {
version: '1.0',
type: 'structured_workout',
metadata: { created: '2025-01-15T10:30:00Z', sport: 'running' }
};
const violations = await validator.validateKrdToFitToKrd({
originalKrd: krd
});// Custom tolerance configuration
import { createToleranceChecker, toleranceConfigSchema } from '@kaiord/core';
const customConfig = toleranceConfigSchema.parse({
time: 2, // ±2 seconds
power: 5, // ±5 watts
heartRate: 2, // ±2 BPM
cadence: 2 // ±2 RPM
});
const customChecker = createToleranceChecker(customConfig);
const validator = validateRoundTrip(
providers.binaryReader,
providers.binaryWriter,
customChecker,
providers.logger
);