Files
范智鹏 e9762bfbe1 test: 目录对齐赛道二成果物规范(tests/ 迁移+实验报告+提效测量脚本)
- src/test 迁移至根目录 tests/(16 测试 + fixtures/manual),导入改为 ../src/
- 新增 tsconfig.test.json 独立编译测试;.vscode-test.mjs / package.json / .gitignore 同步
- 新增 tests/test-execution-log.md、tests/test-cases.md(116 用例清单)
- 新增 tests/measure/measure-review-time.mjs + performance-comparison.md(提效测量)
- 重命名 3 个中文报告文件为 demo-*-coverage-report.md
- git rm --cached 解除 vsix 跟踪;README 标注演示视频进行中
2026-08-26 19:17:44 +08:00

73 lines
2.2 KiB
TypeScript

import * as assert from 'assert';
import { t, setLanguage, getLanguage, getMessageKeys, Language } from '../src/i18n/messages';
suite('I18n Tests', () => {
test('all message keys have values for all three languages', () => {
const languages: Language[] = ['zh-CN', 'en', 'ja'];
const keys = getMessageKeys();
for (const lang of languages) {
setLanguage(lang);
for (const key of keys) {
const result = t(key);
assert.ok(result, `Key "${key}" is empty for language "${lang}"`);
assert.notStrictEqual(result, key, `Key "${key}" has no translation for language "${lang}"`);
}
}
});
test('default language is zh-CN', () => {
setLanguage('zh-CN');
assert.strictEqual(getLanguage(), 'zh-CN');
});
test('setLanguage changes current language', () => {
setLanguage('en');
assert.strictEqual(getLanguage(), 'en');
setLanguage('ja');
assert.strictEqual(getLanguage(), 'ja');
setLanguage('zh-CN');
});
test('t() falls back to key when key does not exist', () => {
setLanguage('zh-CN');
const result = t('nonexistent.key');
assert.strictEqual(result, 'nonexistent.key');
});
test('t() returns zh-CN string in zh-CN language', () => {
setLanguage('zh-CN');
assert.strictEqual(t('review.noEditor'), '请先打开一个文件');
});
test('t() returns English string in en language', () => {
setLanguage('en');
assert.strictEqual(t('review.noEditor'), 'Please open a file first');
});
test('t() returns Japanese string in ja language', () => {
setLanguage('ja');
assert.strictEqual(t('review.noEditor'), '最初にファイルを開いてください');
});
test('t() with template variables', () => {
setLanguage('en');
assert.strictEqual(
t('export.saved', { 0: '/home/user/report.md' }),
'Report saved to /home/user/report.md'
);
});
test('t() with multiple template variables', () => {
setLanguage('zh-CN');
assert.strictEqual(
t('report.totalSummary', { 0: '10', 1: '3', 2: '5', 3: '2' }),
'总计: 10 | 错误: 3 | 警告: 5 | 建议: 2'
);
});
teardown(() => {
setLanguage('zh-CN');
});
});