const assert = require('assert'); const fs = require('fs'); const os = require('os'); const path = require('path'); const { buildBloodPressureFrame, parseBloodPressureTimeText, prepareSimulation, } = require('../tcp-simulator'); describe('tcp-simulator', () => { it('parses blood pressure time text', () => { assert.deepStrictEqual( parseBloodPressureTimeText('2026-04-15 09:30'), [26, 4, 15, 9, 30], ); }); it('builds blood pressure frame with additive checksum', () => { const frame = buildBloodPressureFrame({ bpSystolic: 120, bpDiastolic: 80, bpPulse: 89, bpTime: '2026-04-15 09:30', bpIncludeTime: true, }); assert.strictEqual( frame.raw, 'AA 55 0E BA 00 78 50 59 1A 04 0F 09 1E 3C', ); }); it('can append a blood pressure frame to file mode simulation', () => { const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'tcp-simulator-')); const framesFile = path.join(tempDir, 'frames.txt'); fs.writeFileSync(framesFile, 'EE 55 01 00 00 01 72 74\n', 'utf8'); try { const prepared = prepareSimulation({ mode: 'file', framesFile, scenarioConfig: null, includeBloodPressure: true, bpSystolic: 120, bpDiastolic: 80, bpPulse: 89, bpTime: '2026-04-15 09:30', bpIncludeTime: true, }); assert.strictEqual(prepared.frames.length, 2); assert.strictEqual(prepared.frames[1].raw, 'AA 55 0E BA 00 78 50 59 1A 04 0F 09 1E 3C'); assert.deepStrictEqual(prepared.analysis.snapshot, { F: 37, N: 120, O: 80, P: 89, }); } finally { fs.rmSync(tempDir, { recursive: true, force: true }); } }); });