import { describe, expect, it } from 'vitest'; import { FLOW, REPLAY_TAIL_BYTES } from '../src/index.js'; describe('invariants du flow control', () => { // Le client n'ACK qu'à réception de données : si le serveur pouvait se mettre // en pause avec un reliquat non-ACKé > LOW mais < pas d'ACK, plus rien ne // progresserait (deadlock observé en acceptation P1 avec ACK_EVERY = 256 Kio). it('ACK_EVERY_BYTES <= LOW_WATERMARK (anti-deadlock)', () => { expect(FLOW.ACK_EVERY_BYTES).toBeLessThanOrEqual(FLOW.LOW_WATERMARK); }); it('LOW < HIGH < LAGGING, tous strictement positifs', () => { expect(FLOW.LOW_WATERMARK).toBeGreaterThan(0); expect(FLOW.HIGH_WATERMARK).toBeGreaterThan(FLOW.LOW_WATERMARK); expect(FLOW.LAGGING_BYTES).toBeGreaterThan(FLOW.HIGH_WATERMARK); }); it('le replay tient dans la fenêtre lagging (resync ne re-déclenche pas lagging)', () => { expect(REPLAY_TAIL_BYTES).toBeLessThan(FLOW.LAGGING_BYTES); }); });