42 lines
1.5 KiB
JavaScript
42 lines
1.5 KiB
JavaScript
const {test} = require('node:test');
|
|
const assert = require('node:assert');
|
|
const TextToSpeech = require('../../src/extensions/scratch3_text2speech/index.js');
|
|
|
|
const fakeStage = {
|
|
textToSpeechLanguage: null
|
|
};
|
|
|
|
const fakeRuntime = {
|
|
getTargetForStage: () => fakeStage,
|
|
on: () => {} // Stub out listener methods used in constructor.
|
|
};
|
|
|
|
const ext = new TextToSpeech(fakeRuntime);
|
|
|
|
test('if no language is saved in the project, use default', () => {
|
|
assert.strictEqual(ext.getCurrentLanguage(), 'en');
|
|
});
|
|
|
|
test('if an unsupported language is dropped onto the set language block, use default', () => {
|
|
ext.setLanguage({LANGUAGE: 'nope'});
|
|
assert.strictEqual(ext.getCurrentLanguage(), 'en');
|
|
});
|
|
|
|
test('if a supported language name is dropped onto the set language block, use it', () => {
|
|
ext.setLanguage({LANGUAGE: 'español'});
|
|
assert.strictEqual(ext.getCurrentLanguage(), 'es');
|
|
});
|
|
|
|
test('get the extension locale for a supported locale that differs', () => {
|
|
ext.setLanguage({LANGUAGE: 'ja-hira'});
|
|
assert.strictEqual(ext.getCurrentLanguage(), 'ja');
|
|
});
|
|
|
|
test('use localized spoken language name in place of localized written language name', () => {
|
|
ext.getEditorLanguage = () => 'es';
|
|
const languageMenu = ext.getLanguageMenu();
|
|
const localizedNameForChineseInSpanish = languageMenu.find(el => el.value === 'zh-cn').text;
|
|
// i.e. should not be 'Chino (simplificado)'
|
|
assert.strictEqual(localizedNameForChineseInSpanish, 'Chino (mandarín)');
|
|
});
|