import test from 'node:test'; import assert from 'node:assert/strict'; import { parseIflytekResult } from '../src/result-parser.mjs'; function lattice(text, { bg, ed, role }) { return { json_1best: JSON.stringify({ st: { bg: String(bg), ed: String(ed), rl: role, rt: [{ ws: [...text].map(character => ({ cw: [{ w: character }] })) }], }, }), }; } test('解析正文、时间和说话人,并合并连续同一说话人', () => { const raw = JSON.stringify({ lattice: [ lattice('你好', { bg: 0, ed: 500, role: 1 }), lattice('世界', { bg: 500, ed: 900, role: 1 }), lattice('您好', { bg: 900, ed: 1300, role: 2 }), ], }); const result = parseIflytekResult(raw); assert.equal(result.text, '你好 世界 您好'); assert.deepEqual(result.segments, [ { text: '你好世界', startMs: 0, endMs: 900, speakerId: '1' }, { text: '您好', startMs: 900, endMs: 1300, speakerId: '2' }, ]); }); test('损坏结果安全返回空正文', () => { assert.deepEqual(parseIflytekResult('{bad json'), { text: '', segments: [] }); });