From 79e2bde11534a309a2ba99ef282e148824ef0b15 Mon Sep 17 00:00:00 2001 From: Sabine Date: Fri, 9 Oct 2026 16:18:31 +0200 Subject: [PATCH] feat(developer): kmc-convert undo use of unitTestEndpoints for 3 non-tested functions --- .../keylayout-to-kmn/keylayout-file-reader.ts | 3 +-- .../keylayout-to-kmn-converter.ts | 10 +++------- .../src/keylayout-to-kmn/kmn-file-writer.ts | 16 +++++++-------- .../test/keylayout-file-reader.tests.ts | 20 +++++++++---------- .../test/keylayout-to-kmn-converter.tests.ts | 4 ++-- 5 files changed, 24 insertions(+), 29 deletions(-) diff --git a/developer/src/kmc-convert/src/keylayout-to-kmn/keylayout-file-reader.ts b/developer/src/kmc-convert/src/keylayout-to-kmn/keylayout-file-reader.ts index 34798d9a13..0aab498500 100644 --- a/developer/src/kmc-convert/src/keylayout-to-kmn/keylayout-file-reader.ts +++ b/developer/src/kmc-convert/src/keylayout-to-kmn/keylayout-file-reader.ts @@ -83,7 +83,7 @@ export class KeylayoutFileReader { /** * @returns true if valid, false if invalid */ - private validate(source: Keylayout.KeylayoutXMLSourceFile, inputFilename: string): boolean { + public validate(source: Keylayout.KeylayoutXMLSourceFile, inputFilename: string): boolean { if (!source) { this.callbacks.reportMessage(ConverterMessages.Error_UnableToReadFile({ inputFilename: inputFilename })); return false; @@ -178,7 +178,6 @@ export class KeylayoutFileReader { findMapIndexinKeymap: this.findMapIndexinKeymap.bind(this), findIndexinKeymapSelect: this.findIndexinKeymapSelect.bind(this), checkForCorrespondingElements: this.checkForCorrespondingElements.bind(this), - validate: this.validate.bind(this), boxArray: this.boxArray.bind(this), }; }; diff --git a/developer/src/kmc-convert/src/keylayout-to-kmn/keylayout-to-kmn-converter.ts b/developer/src/kmc-convert/src/keylayout-to-kmn/keylayout-to-kmn-converter.ts index b13756b5c9..5176e8b331 100644 --- a/developer/src/kmc-convert/src/keylayout-to-kmn/keylayout-to-kmn-converter.ts +++ b/developer/src/kmc-convert/src/keylayout-to-kmn/keylayout-to-kmn-converter.ts @@ -108,7 +108,7 @@ export class KeylayoutToKmnConverter { return null; } try { - if (!KeylayoutReader.unitTestEndpoints.validate(jsonO, inputFilename)) { + if (!KeylayoutReader.validate(jsonO, inputFilename)) { return null; } } catch (e: any) { @@ -720,7 +720,7 @@ export class KeylayoutToKmnConverter { * @param keylayoutModifier the modifier string used in the .keylayout-file * @return true if the modifier can be used in keyman; false if not */ - private isAcceptableKeymanModifier(keylayoutModifier: string): boolean { + public isAcceptableKeymanModifier(keylayoutModifier: string): boolean { if (keylayoutModifier === null) return false; const modifierSingle = keylayoutModifier.toUpperCase().split(" "); @@ -737,7 +737,7 @@ export class KeylayoutToKmnConverter { * @param pos Ukelele (=mac) keycodes * @return VK */ - private mapUkeleleKeycodeToVK(pos: number): string { + public mapUkeleleKeycodeToVK(pos: number): string { const vk = [ "K_A" /* A */, "K_S" /* S */, @@ -1056,13 +1056,9 @@ export class KeylayoutToKmnConverter { /** @internal */ public unitTestEndpoints = { convert: this.convert.bind(this), - reviewRuleInputData: this.reviewRuleInputData.bind(this), createKmnModifier: this.createKmnModifier.bind(this), checkIfCapsIsUsed: this.checkIfCapsIsUsed.bind(this), - isAcceptableKeymanModifier: this.isAcceptableKeymanModifier.bind(this), - mapUkeleleKeycodeToVK: this.mapUkeleleKeycodeToVK.bind(this), - getActionIndexFromActionId: this.getActionIndexFromActionId.bind(this), getActionIdFromActionNext: this.getActionIdFromActionNext.bind(this), getModifierArrayFromKeyModifierArray: this.getModifierArrayFromKeyModifierArray.bind(this), diff --git a/developer/src/kmc-convert/src/keylayout-to-kmn/kmn-file-writer.ts b/developer/src/kmc-convert/src/keylayout-to-kmn/kmn-file-writer.ts index 148eb09783..5a4a16b85c 100644 --- a/developer/src/kmc-convert/src/keylayout-to-kmn/kmn-file-writer.ts +++ b/developer/src/kmc-convert/src/keylayout-to-kmn/kmn-file-writer.ts @@ -325,7 +325,7 @@ export class KmnFileWriter { // lookup key nr of the key which is being processed let keyNr: number = 0; for (let j = 0; j <= KeylayoutToKmnConverter.MAX_KEY_IDENTIFIER; j++) { - if (keylayoutKmnConverter.unitTestEndpoints.mapUkeleleKeycodeToVK(j) === uniqueDataRules[k].key) { + if (keylayoutKmnConverter.mapUkeleleKeycodeToVK(j) === uniqueDataRules[k].key) { keyNr = j; break; } @@ -653,7 +653,7 @@ export class KmnFileWriter { // if the dk is unavailable, the modifiers of the dependant C0 rule will get a warning 'unavailable superior rule ' if (inObj.Dk_modifier) { - const mod_OK = new KeylayoutToKmnConverter(this.callbacks, this.options).unitTestEndpoints.isAcceptableKeymanModifier(inObj.Dk_modifier); + const mod_OK = new KeylayoutToKmnConverter(this.callbacks, this.options).isAcceptableKeymanModifier(inObj.Dk_modifier); if ((outMsg[1].lastIndexOf('unavailable modifier') < 0)) outMsg[1] += (!mod_OK) ? 'unavailable modifier ' : ''; @@ -803,7 +803,7 @@ export class KmnFileWriter { // ------------------------- check unavailable modifiers ------------------------- if ((rule[index].ruleType === "C0") || (rule[index].ruleType === "C1")) { - if (!keylayoutKmnConverter.unitTestEndpoints.isAcceptableKeymanModifier(rule[index].modifierKey)) { + if (!keylayoutKmnConverter.isAcceptableKeymanModifier(rule[index].modifierKey)) { unavailableModiWarnings.compare_type = 'unav_C0_C1'; unavailableModiWarnings.warningMessages = this.createWarningText(unavailableModiWarnings); } @@ -811,7 +811,7 @@ export class KmnFileWriter { else if (rule[index].ruleType === "C2") { - if (!keylayoutKmnConverter.unitTestEndpoints.isAcceptableKeymanModifier(rule[index].modifierDeadkey)) { + if (!keylayoutKmnConverter.isAcceptableKeymanModifier(rule[index].modifierDeadkey)) { unavailableSuperiWarnings.compare_type = 'unav_C2'; unavailableSuperiWarnings.dk_prefix = ['C', 'A']; unavailableSuperiWarnings.dk_id = [rule[index].idPrevDeadkey, rule[index].idDeadkey]; @@ -820,7 +820,7 @@ export class KmnFileWriter { unavailableSuperiWarnings.warningMessages = this.createWarningText(unavailableSuperiWarnings); } - if (!keylayoutKmnConverter.unitTestEndpoints.isAcceptableKeymanModifier(rule[index].modifierKey)) { + if (!keylayoutKmnConverter.isAcceptableKeymanModifier(rule[index].modifierKey)) { unavailableModiWarnings.compare_type = 'unav_C2'; unavailableModiWarnings.modifier = rule[index].modifierKey; unavailableModiWarnings.key = rule[index].key; @@ -830,7 +830,7 @@ export class KmnFileWriter { else if (rule[index].ruleType === "C3") { - if (!keylayoutKmnConverter.unitTestEndpoints.isAcceptableKeymanModifier(rule[index].modifierPrevDeadkey)) { + if (!keylayoutKmnConverter.isAcceptableKeymanModifier(rule[index].modifierPrevDeadkey)) { unavailableSuperiWarnings.compare_type = 'unav_C3'; unavailableSuperiWarnings.dk_prefix = ['A', 'B']; unavailableSuperiWarnings.dk_id = [rule[index].idPrevDeadkey, rule[index].idDeadkey]; @@ -841,7 +841,7 @@ export class KmnFileWriter { unavailableSuperiWarnings.warningMessages = this.createWarningText(unavailableSuperiWarnings, 2); } - if (!keylayoutKmnConverter.unitTestEndpoints.isAcceptableKeymanModifier(rule[index].modifierDeadkey)) { + if (!keylayoutKmnConverter.isAcceptableKeymanModifier(rule[index].modifierDeadkey)) { unavailableSuperiWarnings.compare_type = 'unav_C3'; unavailableSuperiWarnings.prevDk_modifier = rule[index].modifierPrevDeadkey; unavailableSuperiWarnings.prevDk_key = rule[index].prevDeadkey; @@ -852,7 +852,7 @@ export class KmnFileWriter { unavailableSuperiWarnings.warningMessages = this.createWarningText(unavailableSuperiWarnings, 2); } - if (!keylayoutKmnConverter.unitTestEndpoints.isAcceptableKeymanModifier(rule[index].modifierKey)) { + if (!keylayoutKmnConverter.isAcceptableKeymanModifier(rule[index].modifierKey)) { unavailableModiWarnings.compare_type = 'unav_C3'; unavailableModiWarnings.modifier = rule[index].modifierKey; unavailableModiWarnings.key = rule[index].key; diff --git a/developer/src/kmc-convert/test/keylayout-file-reader.tests.ts b/developer/src/kmc-convert/test/keylayout-file-reader.tests.ts index 0f98513867..9cd636c167 100644 --- a/developer/src/kmc-convert/test/keylayout-file-reader.tests.ts +++ b/developer/src/kmc-convert/test/keylayout-file-reader.tests.ts @@ -25,7 +25,7 @@ describe('KeylayoutFileReader', function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); const result: Keylayout.KeylayoutXMLSourceFile | null = sutR.read(compilerTestCallbacks.loadFile(inputFilename)); - const validated = sutR.unitTestEndpoints.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); + const validated = sutR.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); assert.isTrue(validated); }); @@ -33,7 +33,7 @@ describe('KeylayoutFileReader', function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_unknownTags.keylayout'); const result: Keylayout.KeylayoutXMLSourceFile | null = sutR.read(compilerTestCallbacks.loadFile(inputFilename)); - const validated = sutR.unitTestEndpoints.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); + const validated = sutR.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); assert.isFalse(validated); }); @@ -41,33 +41,33 @@ describe('KeylayoutFileReader', function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_additionalTags.keylayout'); const result: Keylayout.KeylayoutXMLSourceFile | null = sutR.read(compilerTestCallbacks.loadFile(inputFilename)); - const validated = sutR.unitTestEndpoints.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); + const validated = sutR.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); assert.isFalse(validated); }); it('validate() should return false on inputfile with missing tags', async function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_missingTags.keylayout'); const result: Keylayout.KeylayoutXMLSourceFile | null = sutR.read(compilerTestCallbacks.loadFile(inputFilename)); - const validated = sutR.unitTestEndpoints.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); + const validated = sutR.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); assert.isFalse(validated); }); it('validate() should return false on no entries in action-when', async function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_noActionWhen.keylayout'); const result: Keylayout.KeylayoutXMLSourceFile | null = sutR.read(compilerTestCallbacks.loadFile(inputFilename)); - const validated = sutR.unitTestEndpoints.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); + const validated = sutR.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); assert.isFalse(validated); }); it('validate() should return false on null as input', async function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_noActionWhen.keylayout'); - const validated = sutR.unitTestEndpoints.validate(null, inputFilename); + const validated = sutR.validate(null, inputFilename); assert.isFalse(validated); }); it('validate() should return false on undefined as input', async function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_noActionWhen.keylayout'); - const validated = sutR.unitTestEndpoints.validate(undefined, inputFilename); + const validated = sutR.validate(undefined, inputFilename); assert.isFalse(validated); }); }); @@ -76,7 +76,7 @@ describe('KeylayoutFileReader', function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_unknownTags.keylayout'); const result: Keylayout.KeylayoutXMLSourceFile | null = sutR.read(compilerTestCallbacks.loadFile(inputFilename)); - const validated = sutR.unitTestEndpoints.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); + const validated = sutR.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); assert.isFalse(validated); }); @@ -84,7 +84,7 @@ describe('KeylayoutFileReader', function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_additionalTags.keylayout'); const result: Keylayout.KeylayoutXMLSourceFile | null = sutR.read(compilerTestCallbacks.loadFile(inputFilename)); - const validated = sutR.unitTestEndpoints.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); + const validated = sutR.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); assert.isFalse(validated); }); @@ -92,7 +92,7 @@ describe('KeylayoutFileReader', function () { const sutR = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test_missingTags.keylayout'); const result: Keylayout.KeylayoutXMLSourceFile | null = sutR.read(compilerTestCallbacks.loadFile(inputFilename)); - const validated = sutR.unitTestEndpoints.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); + const validated = sutR.validate(result as Keylayout.KeylayoutXMLSourceFile, inputFilename); assert.isFalse(validated); }); }); diff --git a/developer/src/kmc-convert/test/keylayout-to-kmn-converter.tests.ts b/developer/src/kmc-convert/test/keylayout-to-kmn-converter.tests.ts index 635c19d838..4e1c47dc0d 100644 --- a/developer/src/kmc-convert/test/keylayout-to-kmn-converter.tests.ts +++ b/developer/src/kmc-convert/test/keylayout-to-kmn-converter.tests.ts @@ -281,7 +281,7 @@ describe('KeylayoutToKmnConverter', function () { [null, false], ].forEach(function (values) { it(("isAcceptableKeymanModifier(" + values[0] + ")").padEnd(38, " ") + ' should return ' + values[1], async function () { - const result = sut.unitTestEndpoints.isAcceptableKeymanModifier(values[0] as string); + const result = sut.isAcceptableKeymanModifier(values[0] as string); assert.equal(result, values[1]); }); }); @@ -303,7 +303,7 @@ describe('KeylayoutToKmnConverter', function () { [, ''], ].forEach(function (values) { it(("mapUkeleleKeycodeToVK(" + values[0] + ")").padEnd(26, " ") + "should return " + "'" + values[1] + "'", async function () { - const result = sut.unitTestEndpoints.mapUkeleleKeycodeToVK(values[0] as number); + const result = sut.mapUkeleleKeycodeToVK(values[0] as number); assert.equal(result, values[1]); }); });