mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-04-11 04:19:26 -07:00
Overlay 2.0 (#12)
This commit is contained in:
22
src/core/services/immersion-tracker/reducer.test.ts
Normal file
22
src/core/services/immersion-tracker/reducer.test.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import { extractLineVocabulary, isKanji } from './reducer';
|
||||
|
||||
test('isKanji follows canonical CJK ranges', () => {
|
||||
assert.ok(isKanji('日'));
|
||||
assert.ok(isKanji('𠀀'));
|
||||
assert.ok(!isKanji('あ'));
|
||||
assert.ok(!isKanji('a'));
|
||||
});
|
||||
|
||||
test('extractLineVocabulary returns words and unique kanji', () => {
|
||||
const result = extractLineVocabulary('hello 你好 猫');
|
||||
|
||||
assert.equal(result.words.length, 3);
|
||||
assert.deepEqual(
|
||||
new Set(result.words.map((entry) => `${entry.headword}/${entry.word}`)),
|
||||
new Set(['hello/hello', '你好/你好', '猫/猫']),
|
||||
);
|
||||
assert.equal(result.words.every((entry) => entry.reading === ''), true);
|
||||
assert.deepEqual(new Set(result.kanji), new Set(['你', '好', '猫']));
|
||||
});
|
||||
Reference in New Issue
Block a user