import 'package:eaimar/modules/translation/models/translation_direction.dart'; import 'package:flutter_test/flutter_test.dart'; const zh = 'zh-CN'; const en = 'en-US'; void main() { group('单向模式:同声翻译 / 多媒体翻译', () { for (final mode in ['simultaneous', 'audioVideo']) { test('$mode 永远是 源→目标,与 ASR 报的语种无关', () { // ASR 报对了 expect( resolveTranslationDirection( mode: mode, sourceCode: zh, targetCode: en, detectedLanguageCode: zh), const TranslationDirection(zh, en), ); // ASR 没报(空串)—— 老实现在这里会判成反向 expect( resolveTranslationDirection( mode: mode, sourceCode: zh, targetCode: en), const TranslationDirection(zh, en), ); // ASR 报成了目标语言 —— 老实现同样会反向 expect( resolveTranslationDirection( mode: mode, sourceCode: zh, targetCode: en, detectedLanguageCode: en), const TranslationDirection(zh, en), ); // 大小写/地区不一致 expect( resolveTranslationDirection( mode: mode, sourceCode: zh, targetCode: en, detectedLanguageCode: 'zh'), const TranslationDirection(zh, en), ); }); } test('换了语言对照样只认源→目标', () { expect( resolveTranslationDirection( mode: 'simultaneous', sourceCode: en, targetCode: zh), const TranslationDirection(en, zh), ); }); }); group('面对面仍是双向', () { test('说话人 1 → 源到目标;说话人 2 → 目标到源', () { expect( resolveTranslationDirection( mode: 'faceToFace', sourceCode: zh, targetCode: en, speaker: 1), const TranslationDirection(zh, en), ); expect( resolveTranslationDirection( mode: 'faceToFace', sourceCode: zh, targetCode: en, speaker: 2), const TranslationDirection(en, zh), ); }); test('说话人未知时才看 ASR 检测结果', () { expect( resolveTranslationDirection( mode: 'faceToFace', sourceCode: zh, targetCode: en, detectedLanguageCode: en), const TranslationDirection(en, zh), ); }); }); test('isOneWayTranslationMode 只覆盖这两个模式', () { expect(isOneWayTranslationMode('simultaneous'), isTrue); expect(isOneWayTranslationMode('audioVideo'), isTrue); expect(isOneWayTranslationMode('faceToFace'), isFalse); expect(isOneWayTranslationMode('call'), isFalse); }); }