Files
electric-cherry/tests/unit/ui-metrics.test.ts
T

22 lines
1.1 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { compareMetricValues, metricDuration, metricNumber, metricPercent } from '../../src/lib/ui/metrics.js';
describe('metric presentation', () => {
it('distinguishes unavailable evidence, zero, and tiny nonzero values', () => {
expect(metricPercent(0, 0)).toBe('—');
expect(metricPercent(0, 1)).toBe('0.0%');
expect(metricPercent(0.0001, 1)).toBe('<0.1%');
expect(metricDuration(0)).toBe('0 h');
expect(metricDuration(0.1 / 3600)).toBe('<1 s');
expect(metricDuration(45 / 3600)).toBe('45 s');
expect(metricDuration(90 / 3600)).toBe('1.5 min');
expect(metricNumber(0.0125)).toBe('<0.1');
});
it('sorts numerically while putting unavailable observations last in both directions', () => {
const values = [2, null, 100, 0, 10];
expect([...values].sort((a, b) => compareMetricValues(a, b, 'desc'))).toEqual([100, 10, 2, 0, null]);
expect([...values].sort((a, b) => compareMetricValues(a, b, 'asc'))).toEqual([0, 2, 10, 100, null]);
});
});