import test from 'node:test'; import assert from 'node:assert/strict'; import { BenchmarkProvider } from '../server/domains/shared/services/BenchmarkProvider.js'; // P0.5 — rate-regime hysteresis: the 10Y must cross a boundary by ±0.25% // before the regime flips, so a rate hovering at the threshold can't toggle // INFLATED gates between back-to-back requests. test('BenchmarkProvider.resolveRateRegime', async (t) => { await t.test('no previous regime → raw thresholds apply', () => { assert.equal(BenchmarkProvider.resolveRateRegime(1.5, null), 'LOW'); assert.equal(BenchmarkProvider.resolveRateRegime(4.5, null), 'NORMAL'); assert.equal(BenchmarkProvider.resolveRateRegime(5.1, null), 'HIGH'); }); await t.test('NORMAL holds until 10Y clears 5.25%', () => { assert.equal(BenchmarkProvider.resolveRateRegime(5.1, 'NORMAL'), 'NORMAL'); // damped assert.equal(BenchmarkProvider.resolveRateRegime(5.25, 'NORMAL'), 'NORMAL'); // boundary assert.equal(BenchmarkProvider.resolveRateRegime(5.3, 'NORMAL'), 'HIGH'); // crossed }); await t.test('HIGH holds until 10Y drops below 4.75%', () => { assert.equal(BenchmarkProvider.resolveRateRegime(4.9, 'HIGH'), 'HIGH'); // damped assert.equal(BenchmarkProvider.resolveRateRegime(4.75, 'HIGH'), 'HIGH'); // boundary assert.equal(BenchmarkProvider.resolveRateRegime(4.7, 'HIGH'), 'NORMAL'); // crossed }); await t.test('LOW/NORMAL boundary at 2% gets the same damping', () => { assert.equal(BenchmarkProvider.resolveRateRegime(1.9, 'NORMAL'), 'NORMAL'); // damped assert.equal(BenchmarkProvider.resolveRateRegime(1.7, 'NORMAL'), 'LOW'); // crossed assert.equal(BenchmarkProvider.resolveRateRegime(2.1, 'LOW'), 'LOW'); // damped assert.equal(BenchmarkProvider.resolveRateRegime(2.3, 'LOW'), 'NORMAL'); // crossed }); await t.test('no change when raw regime equals previous', () => { assert.equal(BenchmarkProvider.resolveRateRegime(4.5, 'NORMAL'), 'NORMAL'); assert.equal(BenchmarkProvider.resolveRateRegime(6.0, 'HIGH'), 'HIGH'); }); await t.test('double jump (LOW→HIGH) is not damped', () => { assert.equal(BenchmarkProvider.resolveRateRegime(5.4, 'LOW'), 'HIGH'); assert.equal(BenchmarkProvider.resolveRateRegime(1.2, 'HIGH'), 'LOW'); }); });