diff --git a/src/main/runtime/character-dictionary-availability.test.ts b/src/main/runtime/character-dictionary-availability.test.ts new file mode 100644 index 0000000..77a3aa4 --- /dev/null +++ b/src/main/runtime/character-dictionary-availability.test.ts @@ -0,0 +1,20 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { + getCharacterDictionaryDisabledReason, + isCharacterDictionaryRuntimeEnabled, +} from './character-dictionary-availability'; + +test('character dictionary runtime is enabled when external Yomitan profile is not configured', () => { + assert.equal(isCharacterDictionaryRuntimeEnabled(''), true); + assert.equal(isCharacterDictionaryRuntimeEnabled(' '), true); + assert.equal(getCharacterDictionaryDisabledReason(''), null); +}); + +test('character dictionary runtime is disabled when external Yomitan profile is configured', () => { + assert.equal(isCharacterDictionaryRuntimeEnabled('/tmp/gsm-profile'), false); + assert.equal( + getCharacterDictionaryDisabledReason('/tmp/gsm-profile'), + 'Character dictionary is disabled while yomitan.externalProfilePath is configured.', + ); +}); diff --git a/src/main/runtime/character-dictionary-availability.ts b/src/main/runtime/character-dictionary-availability.ts new file mode 100644 index 0000000..4d74f6b --- /dev/null +++ b/src/main/runtime/character-dictionary-availability.ts @@ -0,0 +1,10 @@ +export function isCharacterDictionaryRuntimeEnabled(externalProfilePath: string): boolean { + return externalProfilePath.trim().length === 0; +} + +export function getCharacterDictionaryDisabledReason(externalProfilePath: string): string | null { + if (isCharacterDictionaryRuntimeEnabled(externalProfilePath)) { + return null; + } + return 'Character dictionary is disabled while yomitan.externalProfilePath is configured.'; +}