// The desktop's programs against Java's lists (config/Desktop_.txt): // the same programs, in each language's order, with Java's names and icons. import { existsSync, readFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { describe, expect, it } from 'vitest'; import { desktopPrograms, DESKTOP_ORDER, JAVA_PROGRAMS } from '../src/desktop/programs.js'; import { CATALOGS, type Language } from '../src/i18n/i18n.js'; const config = join(dirname(fileURLToPath(import.meta.url)), '../../../tools/java-oracle/.upstream/src/main/resources/config'); const FILES: Readonly> = { de: 'Desktop_de_DE.txt', en: 'Desktop_en_GB.txt' }; describe("the desktop's programs", () => { it.skipIf(!existsSync(config))("are Java's, in the order of each language's list, with Java's names and icons", () => { for (const language of ['de', 'en'] as const) { const lines = readFileSync(join(config, FILES[language]), 'utf8') .split(/\r?\n/) .filter((line) => line.trim() !== '' && !line.trim().startsWith('#')) .map((line) => line.split(';')); expect(DESKTOP_ORDER[language].map((program) => JAVA_PROGRAMS[program].javaClass)).toEqual(lines.map((line) => line[1])); expect(DESKTOP_ORDER[language].map((program) => CATALOGS[language][`program.${program}`])).toEqual(lines.map((line) => line[0])); expect(DESKTOP_ORDER[language].map((program) => `gfx/desktop/${JAVA_PROGRAMS[program].iconFile}`)).toEqual(lines.map((line) => line[3]!.trim())); } }); it("shows a computer's programs only, in the language's order, without the DHCP server", () => { expect(desktopPrograms(['webBrowser', 'commandPrompt', 'dhcpServer', 'imageViewer'], 'de')).toEqual(['commandPrompt', 'imageViewer', 'webBrowser']); expect(desktopPrograms(['webBrowser', 'commandPrompt', 'dhcpServer', 'imageViewer'], 'en')).toEqual(['commandPrompt', 'imageViewer', 'webBrowser']); expect(desktopPrograms(['webServer', 'webBrowser'], 'de')).toEqual(['webServer', 'webBrowser']); expect(desktopPrograms(['webServer', 'webBrowser'], 'en')).toEqual(['webBrowser', 'webServer']); expect(desktopPrograms([], 'de')).toEqual([]); }); });