import test from 'node:test' import assert from 'node:assert/strict' import { summarizeDistribution } from '../src/lib/performance.ts' test('zero usage is measured and ties do not count as better performance', () => { const summary = summarizeDistribution( [ { value: 0, count: 3 }, { value: 12, count: 2 }, { value: 24, count: 5 }, ], 12, ) assert.equal(summary.total, 10) assert.equal(summary.betterThan, 50) assert.equal(summary.tied, 2) assert.equal(summarizeDistribution([{ value: 0, count: 3 }], 0).betterThan, 0) }) test('bin boundaries and the final upper endpoint preserve every sample', () => { const summary = summarizeDistribution( [ { value: 0, count: 2 }, { value: 5, count: 3 }, { value: 100, count: 7 }, ], 100, ) assert.equal(summary.bins[0].count, 2) assert.equal(summary.bins[1].count, 3) assert.equal(summary.bins.at(-1)!.count, 7) assert.equal( summary.bins.reduce((sum, bin) => sum + bin.count, 0), summary.total, ) assert.ok(Math.abs(summary.bins.reduce((sum, bin) => sum + bin.percent, 0) - 100) < 1e-9) }) test('missing measurements and invalid samples produce no percentile', () => { const summary = summarizeDistribution( [ { value: -1, count: 3 }, { value: NaN, count: 2 }, { value: Infinity, count: 1 }, { value: 10, count: -1 }, { value: 20, count: 1.5 }, { value: 24, count: 0 }, ], null, ) assert.equal(summary.total, 0) assert.equal(summary.betterThan, null) assert.equal(summary.current, null) assert.ok(summary.bins.every((bin) => bin.percent === 0)) assert.equal(summarizeDistribution([{ value: 12, count: 2 }], null).betterThan, null) assert.equal(summarizeDistribution([{ value: 12, count: 2 }], NaN).current, null) }) test('current measurements outside the cohort remain within the plot', () => { const summary = summarizeDistribution([{ value: 12, count: 2 }], 140) assert.ok(summary.end >= 140) assert.equal(summary.betterThan, 0) assert.equal(summary.total, 2) })