From 9cc6eccceea2aedeb73c1ea3198e55bc2d57ad54 Mon Sep 17 00:00:00 2001 From: Sabine Date: Fri, 25 Jul 2025 19:12:22 +0200 Subject: [PATCH] feat(developer): use Arrays of objects instead of 2D arrays finished, tests changed accordingly --- .../keylayout-to-kmn-converter.ts | 558 +++--------- .../src/keylayout-to-kmn/kmn-file-writer.ts | 2 +- .../test/keylayout-to-kmn-converter.tests.ts | 840 +++++------------- .../kmc-convert/test/kmn-file-writer.tests.ts | 1 - 4 files changed, 311 insertions(+), 1090 deletions(-) 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 b951a32409..a90aeff27a 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 @@ -26,49 +26,46 @@ export interface convert_object { arrayOf_Modifiers: string[][], arrayOf_Rules: Rule[], }; -//_S2 do I need search??? -export interface ActionIdOutputBehaviourKeyModi_object { - search: string, - actionId: string, - outchar: string, - behaviour: string, - key: string, - modifier: string, + +export interface allArrayContents_object { + actionId?: string, + keyCode?: string, + key?: string, + behaviour?: string, + modifier?: string, + outchar?: string; }; - - -export interface ActionIdKeyModiOutput_object { - actionId: string, - keyCode: string, - key: string, - modifier: string, - outchar: string; -}; -export interface modifierKey_object { - key: string; // _S2 todo change everywhere!!! - modifier: number, -}; -export interface modifier_object { - modifier: string, -}; -export interface behaviourKey_object { - behaviour: string, - key: string, -}; export interface idStateOutput_object { id: string, state: string, output: string, }; -export class KeylayoutToKmnConverter { +/** + * @brief member function to find the number of keys defined in a .keykayout file. + * We process 'MAX_KEY_COUNT' keys at maximum. In case a keylayout has fewer keys defined, we use that smaller number of keys (USE_KEY_COUNT) + * @param data data read from keylayout file + * @return static variable USE_KEY_COUNT holding the number of keys used in a .keykayout file. + */ +export function find_usedKeysCount(data: any): number { + let USE_KEY_COUNT = KeylayoutToKmnConverter.MAX_KEY_COUNT; + for (let i = 0; i < data.keyboard.keyMapSet[0].keyMap.length; i++) { + if (data.keyboard.keyMapSet[0].keyMap[i].key.length < USE_KEY_COUNT) { + // set the max to n-1 (use key 0 -> nth-1) + USE_KEY_COUNT = data.keyboard.keyMapSet[0].keyMap[i].key.length - 1; + } + } + return USE_KEY_COUNT; +} +export class KeylayoutToKmnConverter { static readonly INPUT_FILE_EXTENSION = '.keylayout'; static readonly OUTPUT_FILE_EXTENSION = '.kmn'; - static readonly USED_KEYS_COUNT = 49; // we use key Nr 0 (A) -> key Nr 49 (Space) - static readonly MAX_CTRL_CHARACTER = 32; static readonly SKIP_COMMENTED_LINES = false; + static readonly MAX_CTRL_CHARACTER = 32; + static readonly MAX_KEY_COUNT = 49; // At most we use key Nr 0 (A) -> key Nr 49 (Space) + static USE_KEY_COUNT = KeylayoutToKmnConverter.MAX_KEY_COUNT; // we use key Nr 0 (A) -> highest available key of .keylayout file private options: CompilerOptions; @@ -94,6 +91,11 @@ export class KeylayoutToKmnConverter { return null; } + if (outputFilename === null) { + this.callbacks.reportMessage(ConverterMessages.Error_OutputFilenameIsRequired()); + return null; + } + const KeylayoutReader = new KeylayoutFileReader(this.callbacks/*, this.options*/); const jsonO: KeylayoutXMLSourceFile = KeylayoutReader.read(inputFilename); @@ -162,6 +164,10 @@ export class KeylayoutToKmnConverter { } modifierBehavior.push(singleModifierSet); } + + // fix the amount of processable keys to the maximun nr of keys of a keyMap to avoid processing more keys than defined + KeylayoutToKmnConverter.USE_KEY_COUNT = find_usedKeysCount(jsonObj); + // fill rules into arrayOf_Rules of data_object return this.createRuleData(data_object, jsonObj); } @@ -181,11 +187,13 @@ export class KeylayoutToKmnConverter { let dk_counter_C2: number = 0; let action_id: string; + //find_max_used_keycount(data_ukelele) // check if we use CAPS in a modifier throughout the .keylayout file. In this case we need to add NCAPS const isCapsused: boolean = this.checkIfCapsIsUsed(data_ukelele.arrayOf_Modifiers); - // loop keys 0-50 (= all keys we use) - for (let j = 0; j <= KeylayoutToKmnConverter.USED_KEYS_COUNT; j++) { + + // loop keys 0-49 (= all keys we use) + for (let j = 0; j <= KeylayoutToKmnConverter.USE_KEY_COUNT; j++) { // loop behaviors (in ukelele it is possible to define multiple modifier combinations that behave in the same way) for (let i = 0; i < jsonObj.keyboard.keyMapSet[0].keyMap.length; i++) { @@ -241,13 +249,13 @@ export class KeylayoutToKmnConverter { for (let l = 0; l < data_ukelele.arrayOf_Modifiers[i].length; l++) { - if ((this.get_4_Output__From__ActionId_None(jsonObj, action_id) !== undefined) - && (this.get_4_Output__From__ActionId_None(jsonObj, action_id) !== "")) { + if ((this.get_Output__From__ActionId_None(jsonObj, action_id) !== undefined) + && (this.get_Output__From__ActionId_None(jsonObj, action_id) !== "")) { - const outputchar: string = this.get_4_Output__From__ActionId_None(jsonObj, action_id); + const outputchar: string = this.get_Output__From__ActionId_None(jsonObj, action_id); - const b1_modifierKey_obj: ActionIdOutputBehaviourKeyModi_object[] = - this.get_8_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput(jsonObj, data_ukelele.arrayOf_Modifiers, action_id, outputchar, isCapsused); + const b1_modifierKey_obj: allArrayContents_object[] = + this.get_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput(jsonObj, data_ukelele.arrayOf_Modifiers, action_id, outputchar, isCapsused); for (let m = 0; m < b1_modifierKey_obj.length; m++) { rule_obj = new Rule( @@ -282,7 +290,7 @@ export class KeylayoutToKmnConverter { // https://docs.google.com/document/d/12J3NGO6RxIthCpZDTR8FYSRjiMgXJDLwPY2z9xqKzJ0/edit?tab=t.0#heading=h.g7jwx3lx0ydd ......... // ............................................................................................................................... - const b1_actionIndex: number = this.get_1_ActionIndex__From__ActionId(jsonObj, action_id); + const b1_actionIndex: number = this.get_ActionIndex__From__ActionId(jsonObj, action_id); // with action_id from above loop all 'action' and search for a state(none)-next-pair ............................................................................................................ // e.g. in Block 5: find for action id a18 ...................................................................................................................... @@ -299,37 +307,26 @@ export class KeylayoutToKmnConverter { // Data of Block Nr 4 ..................................................................................................................................................................... // with present action_id (a18) find all keycode-behaviour-pairs that use this action (a18) => (keymapIndex 0/keycode 24 and keymapIndex 3/keycode 24) .................................... // from these create an array of modifier combinations e.g. [['','caps?'], ['Caps']] ..................................................................................................... - /* eg: [['24', 0], ['24', 3]] */ // const b4_deadkey_arr: number[][] = this.get_9o_KeyModifier_array__From__ActionID_oldArrayType(jsonObj, action_id); //_S2 remove&replace - /* eg: [['24', 0], ['24', 3]] */ const b4_deadkey_obj: modifierKey_object[] = this.get_9_KeyModifier_array__From__ActionID(jsonObj, action_id); - /* e.g. [['','caps?'], ['Caps']]*/ //const b4_deadkeyModifier_arr: string[] = this.get_3o_Modifier_array__From__KeyModifier_array_oldArrayType(data_ukelele.arrayOf_Modifiers, b4_deadkey_arr);//_S2 remove&replace - /* e.g. [['','caps?'], ['Caps']]*/ const b4_deadkeyModifier_obj: string[] = this.get_3_Modifier_array__From__KeyModifier_array(data_ukelele.arrayOf_Modifiers, b4_deadkey_obj); + /* eg: [['24', 0], ['24', 3]] */ const b4_deadkey_obj: allArrayContents_object[] = this.get_KeyModifier_array__From__ActionID(jsonObj, action_id); + /* e.g. [['','caps?'], ['Caps']]*/ const b4_deadkeyModifier_obj: string[] = this.get_Modifier_array__From__KeyModifier_array(data_ukelele.arrayOf_Modifiers, b4_deadkey_obj); // ........................................................................................................................................................................................ // Data of Block Nr 6 ..................................................................................................................................................................... // create an array[action id,state,output] from all state-output-pairs that use state = b5_value_next (e.g. use 1 in ) ...................................... - /* eg: [ 'a9','1','â'] */ //const b6_actionId_arr: string[][] = this.get_6o_ActionStateOutput_array__From__ActionState_oldArrayType(jsonObj, b5_value_next);//_S2 remove&replace - /* eg: [ 'a9','1','â'] */ const b6_actionId_obj: idStateOutput_object[] = this.get_6_ActionStateOutput_array__From__ActionState(jsonObj, b5_value_next); + /* eg: [ 'a9','1','â'] */ const b6_actionId_obj: idStateOutput_object[] = this.get_ActionStateOutput_array__From__ActionState(jsonObj, b5_value_next); // ........................................................................................................................................................................................ // Data of Block Nr 1 .................................................................................................................................................................... // create array[Keycode,Keyname,action id,actionIndex,output] and array[Keyname,action id,behaviour,modifier,output] ...................................................................... - /* eg: ['0','K_A','a9','0','â'] */ //const b1_keycode_arr: string[][] = this.get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(jsonObj, b6_actionId_arr);//_S2 remove&replace - /* eg: ['0','K_A','a9','0','â'] */ const b1_keycode_obj: ActionIdKeyModiOutput_object[] = this.get_5_KeyActionOutput_array__From__ActionStateOutput_array(jsonObj, b6_actionId_obj); - - /* eg: ['K_A','a9','0','NCAPS','â']*/ // const b1_modifierKey_arr: string[][] = this.get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_arr(jsonObj, b1_keycode_arr, isCapsused);//_S2 remove&replace - /* eg: ['K_A','a9','0','NCAPS','â']*/ //const b1_modifierKey_obj: ActionIdOutputBehaviourKeyModi_object[] = this.get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(jsonObj, b1_keycode_arr, isCapsused);//_S2 remove&replace - /* eg: ['K_A','a9','0','NCAPS','â']*/ const b1_modifierKey_obj: ActionIdOutputBehaviourKeyModi_object[] = this.get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(jsonObj, b1_keycode_obj, isCapsused);//_S2 remove&replace + /* eg: ['0','K_A','a9','0','â'] */ const b1_keycode_obj: allArrayContents_object[] = this.get_KeyActionOutput_array__From__ActionStateOutput_array(jsonObj, b6_actionId_obj); + /* eg: ['K_A','a9','0','NCAPS','â']*/ const b1_modifierKey_obj: allArrayContents_object[] = this.get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(jsonObj, b1_keycode_obj, isCapsused); // ....................................................................................................................................................................................... - //for (let n1 = 0; n1 < b4_deadkeyModifier_arr.length; n1++) { for (let n1 = 0; n1 < b4_deadkeyModifier_obj.length; n1++) { - //for (let n2 = 0; n2 < b4_deadkeyModifier_arr[n1].length; n2++) { for (let n2 = 0; n2 < b4_deadkeyModifier_obj[n1].length; n2++) { - // for (let n3 = 0; n3 < b4_deadkey_arr.length; n3++) { for (let n3 = 0; n3 < b4_deadkey_obj.length; n3++) { - //for (let n4 = 0; n4 < b1_modifierKey_arr.length; n4++) {//_S2 remove&replace for (let n4 = 0; n4 < b1_modifierKey_obj.length; n4++) { rule_obj = new Rule( @@ -340,27 +337,15 @@ export class KeylayoutToKmnConverter { /* id_prev_deadkey */ 0, /* unique A */ 0, - /* modifier_deadkey */ //this.create_kmn_modifier(b4_deadkeyModifier_arr[n1][n2], isCapsused), /* modifier_deadkey */ this.create_kmn_modifier(b4_deadkeyModifier_obj[n1][n2], isCapsused), - /* deadkey */ //this.map_UkeleleKC_To_VK(Number(b4_deadkey_arr[n3][0])), /* deadkey */ this.map_UkeleleKC_To_VK(Number(b4_deadkey_obj[n3].key)), /* dk for C2*/ dk_counter_C2++, /* unique B */ 0, - /* modifier_key*/ // b1_modifierKey_arr[n4][3],//_S2 remove&replace - /* key */ //b1_modifierKey_arr[n4][0], - /* output */ // new TextEncoder().encode(b1_modifierKey_arr[n4][4]), - /* modifier_key*/ b1_modifierKey_obj[n4].modifier, /* key */ b1_modifierKey_obj[n4].key, /* output */ new TextEncoder().encode(b1_modifierKey_obj[n4].outchar), ); - /* if ((b1_modifierKey_arr[n4][4] !== undefined)//_S2 remove&replace - && (b1_modifierKey_arr[n4][4] !== "undefined") - && (b1_modifierKey_arr[n4][4] !== "")) { - object_array.push(rule_obj); - }*/ - if ((b1_modifierKey_obj[n4].outchar !== undefined) && (b1_modifierKey_obj[n4].outchar !== "undefined") && (b1_modifierKey_obj[n4].outchar !== "")) { @@ -399,91 +384,56 @@ export class KeylayoutToKmnConverter { // Data of Block Nr 4 ........................................................................................................................................................................ // with present action_id (a16) find all keycode-behaviour-pairs that use this action (a16) => (keymapIndex 3/keycode 32) .................................................................... // from these create an array of modifier combinations e.g. [ [ 'anyOption', 'Caps' ] ] ..................................................................................................... - /* e.g. [['32', 3]] */ // const b4_deadkey_arr: number[][] = this.get_9o_KeyModifier_array__From__ActionID_oldArrayType(jsonObj, action_id);//_S2 remove&replace - /* e.g. [['32', 3]] */ const b4_deadkey_obj: modifierKey_object[] = this.get_9_KeyModifier_array__From__ActionID(jsonObj, action_id); - /* e.g. [ [ 'anyOption', 'Caps' ] ]*/ // const b4_deadkeyModifier_arr: string[] = this.get_3o_Modifier_array__From__KeyModifier_array_oldArrayType(data_ukelele.arrayOf_Modifiers, b4_deadkey_arr); - /* e.g. [ [ 'anyOption', 'Caps' ] ]*/ const b4_deadkeyModifier_obj: string[] = this.get_3_Modifier_array__From__KeyModifier_array(data_ukelele.arrayOf_Modifiers, b4_deadkey_obj); + /* e.g. [['32', 3]] */ const b4_deadkey_obj: allArrayContents_object[] = this.get_KeyModifier_array__From__ActionID(jsonObj, action_id); + /* e.g. [ [ 'anyOption', 'Caps' ] ]*/ const b4_deadkeyModifier_obj: string[] = this.get_Modifier_array__From__KeyModifier_array(data_ukelele.arrayOf_Modifiers, b4_deadkey_obj); // ........................................................................................................................................................................................... // Data of Block Nr 3 ........................................................................................................................................................................ // get an action id from a state-output-pair that use state = b5_value_state (e.g. use 3 in ) ................................................................. - /* e.g. actioniD = a17 */ const b3_actionId: string = this.get_2_ActionID__From__ActionNext(jsonObj, b5_value_state); + /* e.g. actioniD = a17 */ const b3_actionId: string = this.get_ActionID__From__ActionNext(jsonObj, b5_value_state); // ........................................................................................................................................................................................... // Data of Block Nr 2 ....................................................................................................................................................................... // with present action_id (a17) find all key names and behaviours that use this action (a17) => (keymapIndex 3/keycode 28) .................................................................... // from these create an array of modifier combinations e.g. [ [ 'anyOption', 'Caps' ] ] ..................................................................................................... - - - - /* eg: index=3 */ //const b2_prev_deadkey_arr: number[][] = this.get_9o_KeyModifier_array__From__ActionID_oldArrayType(jsonObj, b3_actionId); // conversion not necessary //_S2 remove&replace - /* eg: index=3 */ const b2_prev_deadkey_obj: modifierKey_object[] = this.get_9_KeyModifier_array__From__ActionID(jsonObj, b3_actionId); // conversion not necessary //_S2 remove&replace - /* e.g. [ [ 'anyOption', 'Caps' ] ] */ // const b2_prev_deadkeyModifier_arr: string[] = this.get_3o_Modifier_array__From__KeyModifier_array_oldArrayType(data_ukelele.arrayOf_Modifiers, b2_prev_deadkey_arr); - /* e.g. [ [ 'anyOption', 'Caps' ] ] */ const b2_prev_deadkeyModifier_obj: string[] = this.get_3_Modifier_array__From__KeyModifier_array(data_ukelele.arrayOf_Modifiers, b2_prev_deadkey_obj); + /* eg: index=3 */ const b2_prev_deadkey_obj: allArrayContents_object[] = this.get_KeyModifier_array__From__ActionID(jsonObj, b3_actionId); + /* e.g. [ [ 'anyOption', 'Caps' ] ] */ const b2_prev_deadkeyModifier_obj: string[] = this.get_Modifier_array__From__KeyModifier_array(data_ukelele.arrayOf_Modifiers, b2_prev_deadkey_obj); // ........................................................................................................................................................................................... // Data of Block Nr 6 ........................................................................................................................................................................ // create an array[action id,state,output] from all state-output-pairs that use state = b5_value_next (e.g. use 1 in ) ......................................... - /* eg:[ [ 'a9','1','â'] ]*/ // const b6_actionId_arr: string[][] = this.get_6o_ActionStateOutput_array__From__ActionState_oldArrayType(jsonObj, b5_value_next); - /* eg:[ [ 'a9','1','â'] ]*/ const b6_actionId_obj: idStateOutput_object[] = this.get_6_ActionStateOutput_array__From__ActionState(jsonObj, b5_value_next); /* eg:[ [ 'a9','1','â'] ]*/ + /* eg:[ [ 'a9','1','â'] ]*/ const b6_actionId_obj: idStateOutput_object[] = this.get_ActionStateOutput_array__From__ActionState(jsonObj, b5_value_next); /* eg:[ [ 'a9','1','â'] ]*/ // ........................................................................................................................................................................................... // Data of Block Nr 1 ....................................................................................................................................................................... // create array[Keycode,Keyname,action id,actionIndex,output] and array[Keyname,action id,behaviour,modifier,output] ......................................................................... - /* eg: ['49','K_SPACE','a0','0','Â'] */ //const b1_keycode_arr: string[][] = this.get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(jsonObj, b6_actionId_arr); - /* eg: ['0','K_A','a9','0','â'] */ const b1_keycode_obj: ActionIdKeyModiOutput_object[] = this.get_5_KeyActionOutput_array__From__ActionStateOutput_array(jsonObj, b6_actionId_obj); - // console.log("b1_keycode_obj ", b1_keycode_obj); - //this.compareBoth(b1_keycode_arr, b1_keycode_obj); - - /* eg: ['K_SPACE','a0','0','NCAPS','Â'] */ //const b1_modifierKey_arr: string[][] = this.get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_arr(jsonObj, b1_keycode_arr, isCapsused);//_S2 remove&replace - /* eg: ['K_SPACE','a0','0','NCAPS','Â'] */ //const b1_modifierKey_obj: ActionIdOutputBehaviourKeyModi_object[] = this.get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(jsonObj, b1_keycode_arr, isCapsused); - const b1_modifierKey_obj: ActionIdOutputBehaviourKeyModi_object[] = this.get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(jsonObj, b1_keycode_obj, isCapsused);//_S2 remove&replace + /* eg: ['49','K_SPACE','a0','0','Â'] */ const b1_keycode_obj: allArrayContents_object[] = this.get_KeyActionOutput_array__From__ActionStateOutput_array(jsonObj, b6_actionId_obj); + /* eg: ['K_SPACE','a0','0','NCAPS','Â'] */ const b1_modifierKey_obj: allArrayContents_object[] = this.get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(jsonObj, b1_keycode_obj, isCapsused); // ........................................................................................................................................................................................... - //for (let n1 = 0; n1 < b2_prev_deadkeyModifier_arr.length; n1++) { for (let n1 = 0; n1 < b2_prev_deadkeyModifier_obj.length; n1++) { - //for (let n2 = 0; n2 < b2_prev_deadkeyModifier_arr[n1].length; n2++) { for (let n2 = 0; n2 < b2_prev_deadkeyModifier_obj[n1].length; n2++) { - //for (let n3 = 0; n3 < b2_prev_deadkey_arr.length; n3++) { for (let n3 = 0; n3 < b2_prev_deadkey_obj.length; n3++) { - //for (let n4 = 0; n4 < b4_deadkeyModifier_arr.length; n4++) { for (let n4 = 0; n4 < b4_deadkeyModifier_obj.length; n4++) { - // for (let n5 = 0; n5 < b4_deadkeyModifier_arr[n4].length; n5++) { for (let n5 = 0; n5 < b4_deadkeyModifier_obj[n4].length; n5++) { - //for (let n6 = 0; n6 < b4_deadkey_arr.length; n6++) { for (let n6 = 0; n6 < b4_deadkey_obj.length; n6++) { - // for (let n7 = 0; n7 < b1_modifierKey_arr.length; n7++) {//_S2 remove&replace for (let n7 = 0; n7 < b1_modifierKey_obj.length; n7++) { rule_obj = new Rule( /* rule_type */ "C3", - /* modifier_prev_deadkey*/ //this.create_kmn_modifier(b2_prev_deadkeyModifier_arr[n1][n2], isCapsused), /* modifier_prev_deadkey*/ this.create_kmn_modifier(b2_prev_deadkeyModifier_obj[n1][n2], isCapsused), - /* prev_deadkey */ //this.map_UkeleleKC_To_VK(Number(b2_prev_deadkey_arr[n3][0])), /* prev_deadkey */ this.map_UkeleleKC_To_VK(Number(b2_prev_deadkey_obj[n3].key)), /* id_prev_deadkey */ dk_counter_C3++, /* unique A */ 0, - /* modifier_deadkey */ // this.create_kmn_modifier(b4_deadkeyModifier_arr[n4][n5], isCapsused), /* modifier_deadkey */ this.create_kmn_modifier(b4_deadkeyModifier_obj[n4][n5], isCapsused), - /* deadkey */ // this.map_UkeleleKC_To_VK(Number(b4_deadkey_arr[n6][0])), /* deadkey */ this.map_UkeleleKC_To_VK(Number(b4_deadkey_obj[n6].key)), /* dk for C2*/ 0, /* unique B */ 0, - /* modifier_key*/ //b1_modifierKey_arr[n7][3],//_S2 remove&replace - /* key */ //b1_modifierKey_arr[n7][0], - /* output */ //new TextEncoder().encode(b1_modifierKey_arr[n7][4]), - /* modifier_key*/ b1_modifierKey_obj[n7].modifier, /* key */ b1_modifierKey_obj[n7].key, /* output */ new TextEncoder().encode(b1_modifierKey_obj[n7].outchar), ); - - /* if ((b1_modifierKey_arr[n7][4] !== undefined)//_S2 remove&replace - && (b1_modifierKey_arr[n7][4] !== "undefined") - && (b1_modifierKey_arr[n7][4] !== "")) { - object_array.push(rule_obj); - }*/ if ((b1_modifierKey_obj[n7].outchar !== undefined) && (b1_modifierKey_obj[n7].outchar !== "undefined") && (b1_modifierKey_obj[n7].outchar !== "")) { @@ -700,7 +650,7 @@ export class KeylayoutToKmnConverter { } else { - add_modifier = String(modifier_state[i]) + " "; + add_modifier = modifier_state[i] + " "; } kmn_modifier += kmn_ncaps + add_modifier; } @@ -822,13 +772,13 @@ export class KeylayoutToKmnConverter { } } - /* @brief member function to return an index for a given actionID - * @param data :any - an object containing all data read from a .keylayout file - * @param search :string - value 'id' to be found - * @return a number specifying the index of an actionId - */ - // _S2 get 1 OK - public get_1_ActionIndex__From__ActionId(data: any, search: string): number { + /** + * @brief member function to return an index for a given actionID + * @param data :any - an object containing all data read from a .keylayout file + * @param search :string - value 'id' to be found + * @return a number specifying the index of an actionId + */ + public get_ActionIndex__From__ActionId(data: any, search: string): number { for (let i = 0; i < data.keyboard.actions.action.length; i++) { if (data.keyboard.actions.action[i]['@_id'] === search) { return i; @@ -836,14 +786,14 @@ export class KeylayoutToKmnConverter { } return 0; } + /** * @brief member function to find the actionID of a certain state-next pair * @param data :any an object containing all data read from a .keylayout file * @param search :string value 'next' to be found * @return a string containing the actionId of a certain state-next pair */ - // _S2 get 2 OK - public get_2_ActionID__From__ActionNext(data: any, search: string): string { + public get_ActionID__From__ActionNext(data: any, search: string): string { if (search !== "none") { for (let i = 0; i < data.keyboard.actions.action.length; i++) { for (let j = 0; j < data.keyboard.actions.action[i].when.length; j++) { @@ -857,41 +807,15 @@ export class KeylayoutToKmnConverter { } /** - * @brief member function to create an array of modifier behaviours for a given keycode in [keycode,modifier] + * @brief member function to create an array of (modifier) behaviours for a given keycode in [{keycode,modifier}] * @param data : any - an object containing all data read from a .keylayout file - * @param search : (string | number)[][] - an array[keycode,modifier] to be found + * @param search : allArrayContents_object[] - an array[{keycode,modifier}] to be found * @return an array: string[] containing modifiers */ - // _S2 get 3 OK - public get_3o_Modifier_array__From__KeyModifier_array_oldArrayType(data: any, search: (string | number)[][]): string[] { - const mapIndexArray_2D: string[] = []; - - //console.log("Xsearch old ",search); - for (let i = 0; i < search.length; i++) { - mapIndexArray_2D.push(data[search[i][1]]); - } - return mapIndexArray_2D; - } - - public get_3_Modifier_array__From__KeyModifier_array_retObj(data: any, search: modifierKey_object[]): modifier_object[] { - const returnObjarray1D = []; - // console.log("Xsearch 3",search); - - let returnObject: modifier_object; - for (let i = 0; i < search.length; i++) { - returnObject = { - modifier: (data[search[i].modifier]) - }; - returnObjarray1D.push(returnObject); - } - return returnObjarray1D; - } - - - public get_3_Modifier_array__From__KeyModifier_array(data: any, search: modifierKey_object[]): string[] { + public get_Modifier_array__From__KeyModifier_array(data: any, search: allArrayContents_object[]): string[] { const returnString1D: string[] = []; for (let i = 0; i < search.length; i++) { - returnString1D.push(data[search[i].modifier]); + returnString1D.push(data[search[i].behaviour]); } return returnString1D; } @@ -903,10 +827,8 @@ export class KeylayoutToKmnConverter { * @param search :string an actionId to be found * @return a string containing the output character */ - // _S2 get 4 OK - public get_4_Output__From__ActionId_None(data: any, search: string): string { + public get_Output__From__ActionId_None(data: any, search: string): string { let OutputValue: string = ""; - for (let i = 0; i < data.keyboard.actions.action.length; i++) { if (data.keyboard.actions.action[i]['@_id'] === search) { for (let j = 0; j < data.keyboard.actions.action[i].when.length; j++) { @@ -922,55 +844,28 @@ export class KeylayoutToKmnConverter { /** * @brief member function to return array of [Keycode,Keyname,actionId,actionIDIndex, output] for a given actionID in of [ actionID,state,output] * @param data :any - an object containing all data read from a .keylayout file - * @param search :string[][] - array of [ actionID,state,output] - * @return a string[][] containing [Keycode,Keyname,actionId,actionIDIndex, output] + * @param search :idStateOutput_object[] - array of [{ actionID,state,output }] + * @return a allArrayContents_object[] containing [{Keycode,Keyname,actionId,actionID, output}] */ - // _S2 get 5 OK - public get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(data: any, search: string[][]): string[][] { - - if ((search === undefined) || (search === null)) - return []; - - - const returnarray2D: string[][] = []; - for (let k = 0; k < search.length; k++) { - for (let i = 0; i < data.keyboard.keyMapSet[0].keyMap.length; i++) { - for (let j = 0; j < data.keyboard.keyMapSet[0].keyMap[i].key.length; j++) { - if (data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_action'] === search[k][0] && - data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'] <= KeylayoutToKmnConverter.USED_KEYS_COUNT) { - returnarray2D.push([ - data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'], - this.map_UkeleleKC_To_VK(Number(data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'])), - data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_action'], - data.keyboard.keyMapSet[0].keyMap[i]['@_index'], - search[k][2] - ]); - } - } - } - } - return returnarray2D; - } - // _S2 get 5 OK - public get_5_KeyActionOutput_array__From__ActionStateOutput_array(data: any, search: idStateOutput_object[]): ActionIdKeyModiOutput_object[] { + public get_KeyActionOutput_array__From__ActionStateOutput_array(data: any, search: idStateOutput_object[]): allArrayContents_object[] { if ((search === undefined) || (search === null)) return []; const returnObjarray1D = []; - let returnObject: ActionIdKeyModiOutput_object; + let returnObject: allArrayContents_object; for (let k = 0; k < search.length; k++) { for (let i = 0; i < data.keyboard.keyMapSet[0].keyMap.length; i++) { for (let j = 0; j < data.keyboard.keyMapSet[0].keyMap[i].key.length; j++) { if (data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_action'] === search[k].id && - data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'] <= KeylayoutToKmnConverter.USED_KEYS_COUNT) { + data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'] <= KeylayoutToKmnConverter.USE_KEY_COUNT) { returnObject = { keyCode: data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'], key: this.map_UkeleleKC_To_VK(Number(data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'])), actionId: data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_action'], - modifier: data.keyboard.keyMapSet[0].keyMap[i]['@_index'], + behaviour: data.keyboard.keyMapSet[0].keyMap[i]['@_index'], outchar: search[k].output }; returnObjarray1D.push(returnObject); @@ -985,27 +880,9 @@ export class KeylayoutToKmnConverter { * @brief member function to get an array of all actionId-output pairs for a certain state * @param data : any an object containing all data read from a .keylayout file * @param search : string a 'state' to be found - * @return an array: string[][] containing all [actionId, state, output] for a certain state + * @return an array: idStateOutput_object[] containing all [{actionId, state, output}] for a certain state */ - // _S2 get 6 OK - public get_6o_ActionStateOutput_array__From__ActionState_oldArrayType(data: any, search: string): string[][] { - const returnarray2D: string[][] = []; - - for (let i = 0; i < data.keyboard.actions.action.length; i++) { - for (let j = 0; j < data.keyboard.actions.action[i].when.length; j++) { - if ((data.keyboard.actions.action[i].when[j]['@_state'] === search)) { - returnarray2D.push([ - data.keyboard.actions.action[i]['@_id'], - data.keyboard.actions.action[i].when[j]['@_state'], - data.keyboard.actions.action[i].when[j]['@_output'] - ]); - } - } - } - return returnarray2D; - } - // _S2 get 6 OK - public get_6_ActionStateOutput_array__From__ActionState(data: any, search: string): idStateOutput_object[] { + public get_ActionStateOutput_array__From__ActionState(data: any, search: string): idStateOutput_object[] { const returnObjarray1D: idStateOutput_object[] = []; let returnObject: idStateOutput_object; @@ -1022,83 +899,31 @@ export class KeylayoutToKmnConverter { } } } - return returnObjarray1D; + return returnObjarray1D; // _S2 ToDo rewrite/change all functio comments to new datatypes!!! } /** * @brief member function to create an 2D array of [KeyName,actionId,behaviour,modifier,output] * @param data : any an object containing all data read from a .keylayout file - * @param search : array of [keycode,keyname,actionId,behaviour,output] to be found + * @param search : array of [{keycode,keyname,actionId,behaviour,output}] to be found * @param isCAPSused : boolean flag to indicate if CAPS is used in a keylayout file or not - * @return an array: string[][] containing [KeyName,actionId,behaviour,modifier,output] + * @return an array: allArrayContents_object[] containing [{KeyName,actionId,behaviour,modifier,output}] */ - // _S2 get 7 OK --> tests not OK - public get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_oldArrayType(data: any, search: (boolean | string)[][], isCAPSused: boolean): string[][] { - const returnarray: string[][] = []; - - if (!((search === undefined) || (search === null) || (search.length === 0))) { - for (let i = 0; i < search.length; i++) { - const behaviour: number = Number(search[i][3]); - for (let j = 0; j < data.keyboard.modifierMap.keyMapSelect[behaviour].modifier.length; j++) { - returnarray.push([ - // KeyName - String(search[i][1]), - // actionId - String(search[i][2]), - // behaviour - String(search[i][3]), - // modifier - String(this.create_kmn_modifier(data.keyboard.modifierMap.keyMapSelect[behaviour].modifier[j]['@_keys'], isCAPSused)), - // output - String(search[i][4]) - ]); - } - } - } - // remove duplicates - const [unique_returnarray] = returnarray.reduce((acc, curr) => { - const [uniq, set] = acc; - if (!set.has(curr.join(','))) { - set.add(curr.join(',')); - uniq.push(curr); - } - return acc; - }, - [[], new Set()], - ); - return unique_returnarray; - } - public get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(data: any, search: ((boolean | string)[])[], isCAPSused: boolean): ActionIdOutputBehaviourKeyModi_object[] { - const returnarray: string[][] = []; + public get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(data: any, search: allArrayContents_object[], isCAPSused: boolean): allArrayContents_object[] { const returnObjarray1D = []; - let returnObject: ActionIdOutputBehaviourKeyModi_object; - + let returnObject: allArrayContents_object; if (!((search === undefined) || (search === null) || (search.length === 0))) { for (let i = 0; i < search.length; i++) { - const behaviour: number = Number(search[i][3]); - for (let j = 0; j < data.keyboard.modifierMap.keyMapSelect[behaviour].modifier.length; j++) { - - returnarray.push([ - // KeyName - String(search[i][1]), - // actionId - String(search[i][2]), - // behaviour - String(search[i][3]), - // modifier - String(this.create_kmn_modifier(data.keyboard.modifierMap.keyMapSelect[behaviour].modifier[j]['@_keys'], isCAPSused)), - // output - String(search[i][4]) - ]); + const behaviour_idx: number = Number(search[i].behaviour); + for (let j = 0; j < data.keyboard.modifierMap.keyMapSelect[behaviour_idx].modifier.length; j++) { returnObject = { - search: "", - actionId: String(search[i][2]), - behaviour: String(search[i][3]), - modifier: String(this.create_kmn_modifier(data.keyboard.modifierMap.keyMapSelect[behaviour].modifier[j]['@_keys'], isCAPSused)), - key: String(search[i][1]), - outchar: String(search[i][4]), + actionId: search[i].actionId, + key: search[i].key, + behaviour: search[i].behaviour, + modifier: this.create_kmn_modifier(data.keyboard.modifierMap.keyMapSelect[behaviour_idx].modifier[j]['@_keys'], isCAPSused), + outchar: search[i].outchar, }; returnObjarray1D.push(returnObject); } @@ -1108,55 +933,15 @@ export class KeylayoutToKmnConverter { const unique_Objarray = returnObjarray1D.reduce((unique, o) => { if (!unique.some(obj => obj.actionId === o.actionId && + obj.key === o.key && obj.behaviour === o.behaviour && obj.modifier === o.modifier && - obj.key === o.key && obj.outchar === o.outchar )) { unique.push(o); } return unique; }, []); - - return unique_Objarray; - } - public get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(data: any, search: ActionIdKeyModiOutput_object[], isCAPSused: boolean): ActionIdOutputBehaviourKeyModi_object[] { - - const returnObjarray1D = []; - let returnObject: ActionIdOutputBehaviourKeyModi_object; - - - if (!((search === undefined) || (search === null) || (search.length === 0))) { - for (let i = 0; i < search.length; i++) { - const behaviour: number = Number(search[i].modifier); - for (let j = 0; j < data.keyboard.modifierMap.keyMapSelect[behaviour].modifier.length; j++) { - - returnObject = { - search: "", - actionId: String(search[i].actionId), - behaviour: String(search[i].modifier), - modifier: String(this.create_kmn_modifier(data.keyboard.modifierMap.keyMapSelect[behaviour].modifier[j]['@_keys'], isCAPSused)), - key: String(search[i].key), - outchar: String(search[i].outchar), - }; - returnObjarray1D.push(returnObject); - } - } - } - // remove duplicates - const unique_Objarray = returnObjarray1D.reduce((unique, o) => { - if (!unique.some(obj => - obj.actionId === o.actionId && - obj.behaviour === o.behaviour && - obj.modifier === o.modifier && - obj.key === o.key && - obj.outchar === o.outchar - )) { - unique.push(o); - } - return unique; - }, []); - return unique_Objarray; } @@ -1167,30 +952,28 @@ export class KeylayoutToKmnConverter { * @param search : string - an actionId to be found * @param outchar : string - the output character * @param isCAPSused : boolean - flag to indicate if CAPS is used in a keylayout file or not - * @return an array: string[][] containing [actionID,output,actionID, behaviour,keyname,modifier] + * @return an array: allArrayContents_object[] containing [{actionID,output,actionID, behaviour,keyname,modifier}] */ - // _S2 get 8 OK - public get_8_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput(data: any, modi: any, search: string, outchar: string, isCapsused: boolean): ActionIdOutputBehaviourKeyModi_object[] { + public get_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput(data: any, modi: string[][], search: string, outchar: string, isCapsused: boolean): allArrayContents_object[] { const returnObjarray1D = []; - let returnObject: ActionIdOutputBehaviourKeyModi_object; + let returnObject: allArrayContents_object; if ((search === "") || (search === undefined) || !((isCapsused === true) || (isCapsused === false))) { return []; } // loop behaviors (in ukelele it is possible to define multiple modifier combinations that behave in the same way) for (let i = 0; i < data.keyboard.keyMapSet[0].keyMap.length; i++) { - for (let j = 0; j <= KeylayoutToKmnConverter.USED_KEYS_COUNT; j++) { + + for (let j = 0; j <= KeylayoutToKmnConverter.USE_KEY_COUNT; j++) { if (data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_action'] === search) { for (let k = 0; k < modi[data.keyboard.keyMapSet[0].keyMap[i]['@_index']].length; k++) { - const behaviour: string = data.keyboard.keyMapSet[0].keyMap[i]['@_index']; - + const behaviour_idx: number = data.keyboard.keyMapSet[0].keyMap[i]['@_index']; returnObject = { - search: search, outchar: outchar, actionId: data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_action'], behaviour: data.keyboard.keyMapSet[0].keyMap[i]['@_index'], key: this.map_UkeleleKC_To_VK(Number(data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'])), - modifier: this.create_kmn_modifier(modi[behaviour][k], isCapsused), + modifier: this.create_kmn_modifier(modi[behaviour_idx][k], isCapsused), }; returnObjarray1D.push(returnObject); } @@ -1203,9 +986,8 @@ export class KeylayoutToKmnConverter { // remove duplicates const unique_Objarray = returnObjarray1D.reduce((unique, o) => { if (!unique.some(obj => - obj.actionId === o.actionId && obj.outchar === o.outchar && - obj.search === o.search && + obj.actionId === o.actionId && obj.behaviour === o.behaviour && obj.key === o.key && obj.modifier === o.modifier @@ -1219,47 +1001,24 @@ export class KeylayoutToKmnConverter { } /** - * @brief member function to create an array of [keycode,behaviour] for a given actionId + * @brief member function to create an array of [{keycode,behaviour}] for a given actionId * @param data : any - an object containing all data read from a .keylayout file * @param search : string - an actionId to be found - * @return an array: number[][] containing [keycode,behaviour] + * @return an array: allArrayContents_object[] containing [{keycode,behaviour}] */ - // _S2 get 9 OK //_S2 remove&replace - public get_9o_KeyModifier_array__From__ActionID_oldArrayType(data: any, search: string): number[][] { + public get_KeyModifier_array__From__ActionID(data: any, search: string): allArrayContents_object[] { const mapIndexArray_2D: number[][] = []; - let returnObject: modifierKey_object; - const mapIndexObject1D: modifierKey_object[] = []; + let returnObject: allArrayContents_object; + const mapIndexObject1D: allArrayContents_object[] = []; for (let i = 0; i < data.keyboard.keyMapSet[0].keyMap.length; i++) { - for (let j = 0; j <= KeylayoutToKmnConverter.USED_KEYS_COUNT; j++) { + for (let j = 0; j <= KeylayoutToKmnConverter.USE_KEY_COUNT; j++) { if (data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_action'] === search) { mapIndexArray_2D.push([data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'], i]); - returnObject = { key: data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'], - modifier: i - }; - mapIndexObject1D.push(returnObject); - } - } - } - return mapIndexArray_2D; - } - public get_9_KeyModifier_array__From__ActionID(data: any, search: string): modifierKey_object[] { - const mapIndexArray_2D: number[][] = []; - let returnObject: modifierKey_object; - const mapIndexObject1D: modifierKey_object[] = []; - - for (let i = 0; i < data.keyboard.keyMapSet[0].keyMap.length; i++) { - for (let j = 0; j <= KeylayoutToKmnConverter.USED_KEYS_COUNT; j++) { - if (data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_action'] === search) { - - mapIndexArray_2D.push([data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'], i]); - - returnObject = { - key: data.keyboard.keyMapSet[0].keyMap[i].key[j]['@_code'], - modifier: i + behaviour: String(i), }; mapIndexObject1D.push(returnObject); } @@ -1272,101 +1031,6 @@ export class KeylayoutToKmnConverter { public convert_bound = { convert: this.convert.bind(this), }; - - - - public dummy(into: any) { - } - public compareBoth(arr: any, obj: any,) { - - // compare:----------------------------------- - for (let k = 0; k < obj.length; k++) { - /*console.log("k ", k); - - console.log(" arr", typeof (arr), arr, "----", typeof (arr[k]), arr[k]); - console.log("-------------------- ",); - console.log(" obj", typeof (obj), obj, "----", typeof (obj[k]), obj[k]); - - console.log("arr[k ", arr[k]); - console.log("obj[k].modifier ", obj[k].modifier);*/ - if ( - (arr.length === obj.length) && - - - (arr[k] === obj[k].modifier) - // (arr[k][1] === obj[k].key) - - /*(arr[k][0] === obj[k].key) && - (arr[k][1] === obj[k].actionId) && - (arr[k][2] === obj[k].behaviour) && - (arr[k][3] === obj[k].modifier) && - (arr[k][4] === obj[k].outchar)*/ - - ) { - console.log("IS_EQUAL ",); - } - else console.log("NONONO not_EQUAL \n", - (arr.length === obj.length), obj.length, "<->", arr.length, "\n", - - (arr[k] === obj[k].modifier), obj[k].modifier, "<->", arr[k], "\n", - // (arr[k][1] === obj[k].key), obj[k].key, "<->", arr[k][1], "\n", - - - /* (arr[k][0] === obj[k].key), obj[k].key, "<->", arr[k][0], "\n", - (arr[k][1] === obj[k].actionId), obj[k].actionId, "<->", arr[k][1], "\n", - (arr[k][2] === obj[k].behaviour), obj[k].behaviour, "<->", arr[k][2], "\n", - (arr[k][3] === obj[k].modifier), obj[k].modifier, "<->", arr[k][3], "\n", - (arr[k][4] === obj[k].outchar), obj[k].outchar, "<->", arr[k][4]*/ - ); - } - } - public compareSameType(arr1: any, arr2: any,) { - - - // compare:----------------------------------- - for (let k = 0; k < arr1.length; k++) { - /*console.log("k ", k); - - console.log(" arr1", typeof (arr1), arr1, "----", typeof (arr1[k]), arr1[k]); - console.log("-------------------- ",); - console.log(" arr2", typeof (arr2), arr2, "----", typeof (arr2[k]), arr2[k]); - - console.log("arr1[k ", arr1[k]); - console.log("arr2[k].modifier ", arr2[k].modifier);*/ - if ( - (arr1.length === arr2.length) && - - (arr1[k].search === arr2[k].search) && - (arr1[k].actionId === arr2[k].actionId) && - (arr1[k].behaviour === arr2[k].behaviour) && - (arr1[k].modifier === arr2[k].modifier) && - (arr1[k].key === arr2[k].key) && - (arr1[k].outchar === arr2[k].outchar) - - ) { - console.log("compareSameType: IS_EQUAL ",); - } - else console.log("compareSameType: NONONO not_EQUAL \n", - (arr1.length === arr2.length), arr2.length, "<->", arr1.length, "\n", - - (arr1[k] === arr2[k].modifier), arr2[k].modifier, "<->", arr1[k], "\n", - // (arr1[k][1] === arr2[k].key), arr2[k].key, "<->", arr1[k][1], "\n", - - - /* (arr1[k][0] === arr2[k].key), arr2[k].key, "<->", arr1[k][0], "\n", - (arr1[k][1] === arr2[k].actionId), arr2[k].actionId, "<->", arr1[k][1], "\n", - (arr1[k][2] === arr2[k].behaviour), arr2[k].behaviour, "<->", arr1[k][2], "\n", - (arr1[k][3] === arr2[k].modifier), arr2[k].modifier, "<->", arr1[k][3], "\n", - (arr1[k][4] === arr2[k].outchar), arr2[k].outchar, "<->", arr1[k][4]*/ - ); - } - } - - - - - - } /** 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 f504419220..2854940ecc 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 @@ -149,7 +149,7 @@ export class KmnFileWriter { // lookup key nr of the key which is being processed let keyNr: number = 0; - for (let j = 0; j <= KeylayoutToKmnConverter.USED_KEYS_COUNT; j++) { + for (let j = 0; j <= KeylayoutToKmnConverter.USE_KEY_COUNT; j++) { if (keylayoutKmnConverter.map_UkeleleKC_To_VK(j) === unique_data_Rules[k].key) { keyNr = j; break; 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 f3ac272cec..de48dd1e22 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 @@ -10,7 +10,7 @@ import 'mocha'; import { assert } from 'chai'; import { compilerTestCallbacks, compilerTestOptions, makePathToFixture } from './helpers/index.js'; -import { /*ActionIdOutputBehaviourKeyModi_object,*/ KeylayoutToKmnConverter } from '../src/keylayout-to-kmn/keylayout-to-kmn-converter.js'; +import { idStateOutput_object, allArrayContents_object, KeylayoutToKmnConverter } from '../src/keylayout-to-kmn/keylayout-to-kmn-converter.js'; import { KeylayoutFileReader } from '../src/keylayout-to-kmn/keylayout-file-reader.js'; import { ConverterMessages } from '../src/converter-messages.js'; import * as NodeAssert from 'node:assert'; @@ -21,49 +21,7 @@ describe('KeylayoutToKmnConverter', function () { compilerTestCallbacks.clear(); }); - // todo remove - describe('RunOneFile', function () { - const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); - const inputFilename = makePathToFixture('../data/Test.keylayout'); - sut.run(inputFilename); - assert.isTrue(true); - }); - - // todo remove - describe('RunOneFile', function () { - const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); - const inputFilename = makePathToFixture('../data/Italian.keylayout'); - sut.run(inputFilename); - assert.isTrue(true); - }); - - // todo remove - describe('RunAllFiles', function () { - const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); - [ - [makePathToFixture('../data/Italian.keylayout')], - [makePathToFixture('../data/Italian_command.keylayout')], - [makePathToFixture('../data/Swiss_French.keylayout')], - [makePathToFixture('../data/Spanish.keylayout')], - [makePathToFixture('../data/Swiss_German.keylayout')], - [makePathToFixture('../data/US.keylayout')], - [makePathToFixture('../data/Polish.keylayout')], - [makePathToFixture('../data/French.keylayout')], - [makePathToFixture('../data/Latin_American.keylayout')], - // [makePathToFixture('../data/German_complete.keylayout')], - [makePathToFixture('../data/German_complete_reduced.keylayout')], - //[makePathToFixture('../data/German_Standard.keylayout')], - ].forEach(function (files_) { - sut.run(files_[0]); - assert.isTrue(true); - }); - }); describe('run() ', function () { - - // _S2 can I do this??? - some tests of the run() function might take longer than 2000 ms - // see https://pramod-mallick.medium.com/mocha-with-selenium-webdriver-exception-timeout-of-2000ms-exceeded-89df7b6230c6 - this.timeout(10000); - const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); it('run() should throw on null input file name and null output file name', async function () { @@ -93,8 +51,16 @@ describe('KeylayoutToKmnConverter', function () { const inputFilename = makePathToFixture('../data/Unavailable.keylayout'); const result = sut.run(inputFilename, null); assert.isNotNull(result); - assert.equal(compilerTestCallbacks.messages.length, 2); - assert.deepEqual(compilerTestCallbacks.messages[0], ConverterMessages.Error_FileNotFound({ inputFilename: inputFilename })); + assert.equal(compilerTestCallbacks.messages.length, 1); + assert.deepEqual(compilerTestCallbacks.messages[0], ConverterMessages.Error_OutputFilenameIsRequired()); + }); + + it('run() should throw on and null output file name', async function () { + const inputFilename = makePathToFixture('../data/Test.keylayout'); + const result = sut.run(inputFilename, null); + assert.isNotNull(result); + assert.equal(compilerTestCallbacks.messages.length, 1); + assert.deepEqual(compilerTestCallbacks.messages[0], ConverterMessages.Error_OutputFilenameIsRequired()); }); it('run() should return on correct input file name and empty output file name ', async function () { @@ -290,123 +256,40 @@ describe('KeylayoutToKmnConverter', function () { }); }); - describe('get_3o_Modifier_array__From__KeyModifier_array_oldArrayType ', function () { + describe('get_Modifier_array__From__KeyModifier_array ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); const read = sut_r.read(inputFilename); const converted = sut.convert_bound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn')); - [ - [[['0', 0]], [['', 'shift? caps? ']]], - [[['0', 2]], [['shift? leftShift caps? ', 'anyShift caps?', 'shift leftShift caps ', 'shift? rightShift caps? ']]], - [[['0', 999]], [null]], - [[['999',]], [null]], - [[['0', -999]], [null]], - [[['0']], [null]], + [[{ key: '0', behaviour: 0 }], [['', 'shift? caps? ']]], + [[{ key: '0', behaviour: 2 }], [['shift? leftShift caps? ', 'anyShift caps?', 'shift leftShift caps ', 'shift? rightShift caps? ']]], + [[{ key: '0', behaviour: 999 }], [null]], + [[{ key: '999', behaviour: null }], [null]], + [[{ key: '0', behaviour: -999 }], [null]], + [[{ key: '0', behaviour: null }], [null]], + [[], []], ].forEach(function (values) { - it((values[1][0] !== null) ? - ("get_3o_Modifier_array__From__KeyModifier_array_oldArrayType(['" + values[0][0][0] + "', '" + values[0][0][1] + "'])").padEnd(68, " ") + " should return ['" + values[1][0][0] + "', '" + values[1][0][1] + "']" : - ("get_3o_Modifier_array__From__KeyModifier_array_oldArrayType(['" + values[0][0][0] + "', '" + values[0][0][1] + "'])").padEnd(68, " ") + " should return ['" + values[1][0] + "']", async function () { - const result = sut.get_3o_Modifier_array__From__KeyModifier_array_oldArrayType(converted.arrayOf_Modifiers, values[0]); + it((values[1] !== null) ? + ("get_Modifier_array__From__KeyModifier_array('" + JSON.stringify(values[0]) + "')").padEnd(68, " ") + " should return '" + /*values[1] +*/ JSON.stringify(values[1]) + "'" : + ("get_Modifier_array__From__KeyModifier_array('" + JSON.stringify(values[0]) + "')").padEnd(68, " ") + " should return '" + "null" + "'", async function () { + const result = sut.get_Modifier_array__From__KeyModifier_array(converted.arrayOf_Modifiers, values[0] as allArrayContents_object[]); assert.deepStrictEqual(JSON.stringify(result), JSON.stringify(values[1])); }); }); - - [[[[null]], [null]], - [[[undefined]], [null]], - [[[]], [null]], - ].forEach(function (values) { - it(("get_3o_Modifier_array__From__KeyModifier_array_oldArrayType([" + values[0][0] + "])").padEnd(68, " ") + " should return ['" + values[1][0] + "']", async function () { - const result = sut.get_3o_Modifier_array__From__KeyModifier_array_oldArrayType(converted.arrayOf_Modifiers, values[0]); - assert.deepStrictEqual(JSON.stringify(result), JSON.stringify(values[1])); - }); - }); - }); - describe('get_3_Modifier_array__From__KeyModifier_array ', function () { - /*const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); - const sut_r = new KeylayoutFileReader(compilerTestCallbacks); - const inputFilename = makePathToFixture('../data/Test.keylayout'); - const read = sut_r.read(inputFilename); - const converted = sut.convert_bound.convert(read, inputFilename.replace(/\.keylayout$/, '.kmn')); - - - //search old [ [ '45', 5 ] ] - //search [ { key: '45', modifier: 5 } ] - - - [ - - //search - [[{ key: '0', modifier: 0 }, ['', 'shift? caps? ']]], - [[{ key: '3', modifier: 0 },['', 'shixft? caps? ']]], - [[{ key: '7', modifier: 0 },['', 'shift? caxps? ']]], - [[{ key: '0', modifier: 2 },['', 'shift? caps? ']]], - [[{ key: '0', modifier: 999 },['', 'shift? caps? ']]], - [[{ key: '999', modifier: null },['', 'shift? caps? ']]], - [[{ key: '0', modifier: -999 },['', 'shift? caps? ']]], - [[{ key: '0', modifier: null },['', 'shift? caps? ']]], - - - - //[['0', 0], [['', 'shift? caps? ']]], - // [[['0', 2]], [['shift? leftShift caps? ', 'anyShift caps?', 'shift leftShift caps ', 'shift? rightShift caps? ']]], - // [[['0', 999]], [null]], - // [[['999',]], [null]], - // [[['0', -999]], [null]], - // [[['0']], [null]], - - - - - ].forEach(function (values) { - - - - console.log("values ", values); - console.log("values[0] ", values[0]); - console.log("values[1] ", values[1]); - //console.log("values[1][0] ", values[1][0]); - // console.log("values[0][0][0] ", values[0][0][0]); - // console.log(" values[0][0][1]", values[0][0][1]); - // console.log("values[1][0][0] ", values[1][0][0]); - // console.log("values [1][0][1]", values[1][0][1]); - - -console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , "'])", " should return ['" , values[1] , "']"); - - - - it((values[1] !== null) ? - ("get_3_Modifier_array__From__KeyModifier_array(['" + values[0] + "'])").padEnd(68, " ") + " should return ['" + values[1] + "']" : - ("get_3_Modifier_array__From__KeyModifier_array(['" + values[0] + "'])").padEnd(68, " ") + " should return ['" + values[1] + "']", async function () { - //const result = sut.get_3_Modifier_array__From__KeyModifier_array(converted.arrayOf_Modifiers, values[0]); - // assert.deepStrictEqual(JSON.stringify(result), JSON.stringify(values[1])); - }); - }); - - /* [[[[null]], [null]], - [[[undefined]], [null]], - [[[]], [null]], - ].forEach(function (values) { - it(("get_3_Modifier_array__From__KeyModifier_array([" + values[0][0] + "])").padEnd(68, " ") + " should return ['" + values[1][0] + "']", async function () { - const result = sut.get_3_Modifier_array__From__KeyModifier_array(converted.arrayOf_Modifiers, values[0]); - assert.deepStrictEqual(JSON.stringify(result), JSON.stringify(values[1])); - }); - }); - */ }); - describe('get_9_KeyModifier_array__From__ActionID ', function () { + describe('get_KeyModifier_array__From__ActionID ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); const read = sut_r.read(inputFilename); [ - ['A_16', [{ "key": "32", "modifier": 5 }]], - ['A_19', [{ "key": "45", "modifier": 5 }]], - ['A_18', [{ "key": "24", "modifier": 0 }, { "key": "24", "modifier": 5 }]], + ['A_16', [{ "key": "32", "behaviour": "5" }]], + ['A_19', [{ "key": "45", "behaviour": "5" }]], + ['A_18', [{ "key": "24", "behaviour": "0" }, { "key": "24", "behaviour": "5" }]], ['unknown', []], [undefined, []], [null, []], @@ -417,44 +300,14 @@ console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , for (let i = 0; i < values[1].length; i++) { outstring = outstring + "[ " + JSON.stringify(values[1][i]) + "], "; } - it(("get_9_KeyModifier_array__From__ActionID('" + values[0] + "')").padEnd(57, " ") + ' should return ' + outstring.substring(0, outstring.lastIndexOf(']') + 2) + " ]", async function () { - //const result = sut.get_9_KeyModifier_array__From__ActionID_arr(read, String(values[0])); //_S2 remove&replace - const result = sut.get_9_KeyModifier_array__From__ActionID(read, String(values[0])); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - }); - }); - }); - describe('get_9o_KeyModifier_array__From__ActionID_oldArrayType ', function () { - const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); - const sut_r = new KeylayoutFileReader(compilerTestCallbacks); - const inputFilename = makePathToFixture('../data/Test.keylayout'); - const read = sut_r.read(inputFilename); - - [ - ['A_16', [['32', 5]]], - ['A_19', [['45', 5]]], - ['A_18', [['24', 0], ['24', 5]]], - - - ['unknown', []], - [undefined, []], - [null, []], - [' ', []], - ['', []], - ].forEach(function (values) { - - let outstring = '[ '; - for (let i = 0; i < values[1].length; i++) { - outstring = outstring + "[ '" + values[1][i][0] + "', " + values[1][i][1].toString() + "], "; - } - it(("get_9o_KeyModifier_array__From__ActionID_oldArrayType('" + values[0] + "')").padEnd(57, " ") + ' should return ' + outstring.substring(0, outstring.lastIndexOf(']') + 2) + " ]", async function () { - const result = sut.get_9o_KeyModifier_array__From__ActionID_oldArrayType(read, String(values[0])); + it(("get_KeyModifier_array__From__ActionID('" + values[0] + "')").padEnd(57, " ") + ' should return ' + outstring.substring(0, outstring.lastIndexOf(']') + 2) + " ]", async function () { + const result = sut.get_KeyModifier_array__From__ActionID(read, String(values[0])); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); }); - describe('get_2_ActionID__From__ActionNext ', function () { + describe('get_ActionID__From__ActionNext ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); @@ -474,13 +327,13 @@ console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , [undefined, ''], ['unknown', ''], ].forEach(function (values) { - it(("get_2_ActionID__From__ActionNext('" + values[0] + "')").padEnd(49, " ") + ' should return ' + "'" + values[1] + "'", async function () { - const result = sut.get_2_ActionID__From__ActionNext(read, String(values[0])); + it(("get_ActionID__From__ActionNext('" + values[0] + "')").padEnd(49, " ") + ' should return ' + "'" + values[1] + "'", async function () { + const result = sut.get_ActionID__From__ActionNext(read, String(values[0])); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); }); - describe('get_1_ActionIndex__From__ActionId ', function () { + describe('get_ActionIndex__From__ActionId ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); @@ -498,14 +351,13 @@ console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , [undefined, 0], ['unknown', 0], ].forEach(function (values) { - it(("get_1_ActionIndex__From__ActionId('" + values[0] + "')").padEnd(50, " ") + ' should return ' + values[1], async function () { - const result = sut.get_1_ActionIndex__From__ActionId(read, String(values[0])); + it(("get_ActionIndex__From__ActionId('" + values[0] + "')").padEnd(50, " ") + ' should return ' + values[1], async function () { + const result = sut.get_ActionIndex__From__ActionId(read, String(values[0])); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); }); - - describe('get_4_Output__From__ActionId_None ', function () { + describe('get_Output__From__ActionId_None ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); @@ -519,8 +371,8 @@ console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , ['unknown', ''], ].forEach(function (values) { it( - ("get_4_Output__From__ActionId_None('" + values[0] + "')").padEnd(56, " ") + ' should return ' + "'" + values[1] + "'", async function () { - const result = sut.get_4_Output__From__ActionId_None(read, String(values[0])); + ("get_Output__From__ActionId_None('" + values[0] + "')").padEnd(56, " ") + ' should return ' + "'" + values[1] + "'", async function () { + const result = sut.get_Output__From__ActionId_None(read, String(values[0])); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); @@ -529,114 +381,105 @@ console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , [undefined, ''], [99, ''], ].forEach(function (values) { - it(("get_4_Output__From__ActionId_None('" + values[0] + "')").padEnd(56, " ") + ' should return ' + values[1], async function () { - const result = sut.get_4_Output__From__ActionId_None(read, String(values[0])); + it(("get_Output__From__ActionId_None('" + values[0] + "')").padEnd(56, " ") + ' should return ' + values[1], async function () { + const result = sut.get_Output__From__ActionId_None(read, String(values[0])); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); }); - - describe('get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_oldArrayType ', function () { + describe('get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); const read = sut_r.read(inputFilename); - const b1_keycode_arr = [ - ['49', 'K_SPACE', 'A_0', '0', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '1', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '2', 'ˆ'], - ['6', 'K_Z', 'A_0', '4', 'ˆ'], - ['25', 'K_9', 'A_0', '4', 'ˆ'], - ['43', 'K_COMMA', 'A_0', '4', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '3', 'ˆ'], - ['0', 'K_A', 'A_1', '2', 'Â'], - ['0', 'K_A', 'A_1', '1', 'Â'], - ['14', 'K_E', 'A_10', '0', 'ê'], - ['34', 'K_I', 'A_11', '0', 'î'], - ['31', 'K_O', 'A_13', '0', 'ô'], - ['32', 'K_U', 'A_14', '0', 'û'], - ['14', 'K_E', 'A_2', '2', 'Ê'], - ['14', 'K_E', 'A_2', '1', 'Ê'], - ['34', 'K_I', 'A_3', '2', 'Î'], - ['34', 'K_I', 'A_3', '1', 'Î'], - ['31', 'K_O', 'A_5', '2', 'Ô'], - ['31', 'K_O', 'A_5', '1', 'Ô'], - ['32', 'K_U', 'A_6', '2', 'Û'], - ['32', 'K_U', 'A_6', '1', 'Û'], - ['0', 'K_A', 'A_9', '0', 'â']/**/ + const b1_keycode_arr: allArrayContents_object[] = [ + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '1', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '2', outchar: 'ˆ' }, + { keyCode: '6', key: 'K_Z', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' }, + { keyCode: '25', key: 'K_9', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' }, + { keyCode: '43', key: 'K_COMMA', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '3', outchar: 'ˆ' }, + { keyCode: '0', key: 'K_A', actionId: 'A_1', behaviour: '2', outchar: 'Â' }, + { keyCode: '0', key: 'K_A', actionId: 'A_1', behaviour: '1', outchar: 'Â' }, + { keyCode: '14', key: 'K_E', actionId: 'A_10', behaviour: '0', outchar: 'ê' }, + { keyCode: '34', key: 'K_I', actionId: 'A_11', behaviour: '0', outchar: 'î' }, + { keyCode: '31', key: 'K_O', actionId: 'A_13', behaviour: '0', outchar: 'ô' }, + { keyCode: '32', key: 'K_U', actionId: 'A_14', behaviour: '0', outchar: 'û' }, + { keyCode: '14', key: 'K_E', actionId: 'A_2', behaviour: '2', outchar: 'Ê' }, + { keyCode: '14', key: 'K_E', actionId: 'A_2', behaviour: '1', outchar: 'Ê' }, + { keyCode: '34', key: 'K_I', actionId: 'A_3', behaviour: '2', outchar: 'Î' }, + { keyCode: '34', key: 'K_I', actionId: 'A_3', behaviour: '1', outchar: 'Î' }, + { keyCode: '31', key: 'K_O', actionId: 'A_5', behaviour: '2', outchar: 'Ô' }, + { keyCode: '31', key: 'K_O', actionId: 'A_5', behaviour: '1', outchar: 'Ô' }, + { keyCode: '32', key: 'K_U', actionId: 'A_6', behaviour: '2', outchar: 'Û' }, + { keyCode: '32', key: 'K_U', actionId: 'A_6', behaviour: '1', outchar: 'Û' }, + { keyCode: '0', key: 'K_A', actionId: 'A_9', behaviour: '0', outchar: 'â' } + ]; - const b1_modifierKey_arr = [ - ['K_SPACE', 'A_0', '0', 'NCAPS', 'ˆ'], - ['K_SPACE', 'A_0', '1', 'CAPS', 'ˆ'], - ['K_SPACE', 'A_0', '2', 'NCAPS SHIFT', 'ˆ'], - ['K_SPACE', 'A_0', '2', 'SHIFT CAPS', 'ˆ'], - ['K_Z', 'A_0', '4', 'NCAPS SHIFT RALT', 'ˆ'], - ['K_9', 'A_0', '4', 'NCAPS SHIFT RALT', 'ˆ'], - ['K_COMMA', 'A_0', '4', 'NCAPS SHIFT RALT', 'ˆ'], - ['K_SPACE', 'A_0', '3', 'NCAPS RALT CTRL', 'ˆ'], - ['K_SPACE', 'A_0', '3', 'NCAPS CTRL', 'ˆ'], - ['K_A', 'A_1', '2', 'NCAPS SHIFT', 'Â'], - ['K_A', 'A_1', '2', 'SHIFT CAPS', 'Â'], - ['K_A', 'A_1', '1', 'CAPS', 'Â'], - ['K_E', 'A_10', '0', 'NCAPS', 'ê'], - ['K_I', 'A_11', '0', 'NCAPS', 'î'], - ['K_O', 'A_13', '0', 'NCAPS', 'ô'], - ['K_U', 'A_14', '0', 'NCAPS', 'û'], - ['K_E', 'A_2', '2', 'NCAPS SHIFT', 'Ê'], - ['K_E', 'A_2', '2', 'SHIFT CAPS', 'Ê'], - ['K_E', 'A_2', '1', 'CAPS', 'Ê'], - ['K_I', 'A_3', '2', 'NCAPS SHIFT', 'Î'], - ['K_I', 'A_3', '2', 'SHIFT CAPS', 'Î'], - ['K_I', 'A_3', '1', 'CAPS', 'Î'], - ['K_O', 'A_5', '2', 'NCAPS SHIFT', 'Ô'], - ['K_O', 'A_5', '2', 'SHIFT CAPS', 'Ô'], - ['K_O', 'A_5', '1', 'CAPS', 'Ô'], - ['K_U', 'A_6', '2', 'NCAPS SHIFT', 'Û'], - ['K_U', 'A_6', '2', 'SHIFT CAPS', 'Û'], - ['K_U', 'A_6', '1', 'CAPS', 'Û'], - ['K_A', 'A_9', '0', 'NCAPS', 'â']/**/ + const b1_modifierKey_arr: allArrayContents_object[] = [ + { actionId: 'A_0', key: 'K_SPACE', behaviour: '0', modifier: 'NCAPS', outchar: 'ˆ' }, + { actionId: 'A_0', key: 'K_SPACE', behaviour: '1', modifier: 'CAPS', outchar: 'ˆ' }, + { actionId: 'A_0', key: 'K_SPACE', behaviour: '2', modifier: 'NCAPS SHIFT', outchar: 'ˆ' }, + { actionId: 'A_0', key: 'K_SPACE', behaviour: '2', modifier: 'SHIFT CAPS', outchar: 'ˆ' }, + { actionId: 'A_0', key: 'K_Z', behaviour: '4', modifier: 'NCAPS SHIFT RALT', outchar: 'ˆ' }, + { actionId: 'A_0', key: 'K_9', behaviour: '4', modifier: 'NCAPS SHIFT RALT', outchar: 'ˆ' }, + { actionId: 'A_0', key: 'K_COMMA', behaviour: '4', modifier: 'NCAPS SHIFT RALT', outchar: 'ˆ' }, + { actionId: 'A_0', key: 'K_SPACE', behaviour: '3', modifier: 'NCAPS RALT CTRL', outchar: 'ˆ' }, + { actionId: 'A_0', key: 'K_SPACE', behaviour: '3', modifier: 'NCAPS CTRL', outchar: 'ˆ' }, + { actionId: 'A_1', key: 'K_A', behaviour: '2', modifier: 'NCAPS SHIFT', outchar: 'Â' }, + { actionId: 'A_1', key: 'K_A', behaviour: '2', modifier: 'SHIFT CAPS', outchar: 'Â' }, + { actionId: 'A_1', key: 'K_A', behaviour: '1', modifier: 'CAPS', outchar: 'Â' }, + { actionId: 'A_10', key: 'K_E', behaviour: '0', modifier: 'NCAPS', outchar: 'ê' }, + { actionId: 'A_11', key: 'K_I', behaviour: '0', modifier: 'NCAPS', outchar: 'î' }, + { actionId: 'A_13', key: 'K_O', behaviour: '0', modifier: 'NCAPS', outchar: 'ô' }, + { actionId: 'A_14', key: 'K_U', behaviour: '0', modifier: 'NCAPS', outchar: 'û' }, + { actionId: 'A_2', key: 'K_E', behaviour: '2', modifier: 'NCAPS SHIFT', outchar: 'Ê' }, + { actionId: 'A_2', key: 'K_E', behaviour: '2', modifier: 'SHIFT CAPS', outchar: 'Ê' }, + { actionId: 'A_2', key: 'K_E', behaviour: '1', modifier: 'CAPS', outchar: 'Ê' }, + { actionId: 'A_3', key: 'K_I', behaviour: '2', modifier: 'NCAPS SHIFT', outchar: 'Î' }, + { actionId: 'A_3', key: 'K_I', behaviour: '2', modifier: 'SHIFT CAPS', outchar: 'Î' }, + { actionId: 'A_3', key: 'K_I', behaviour: '1', modifier: 'CAPS', outchar: 'Î' }, + { actionId: 'A_5', key: 'K_O', behaviour: '2', modifier: 'NCAPS SHIFT', outchar: 'Ô' }, + { actionId: 'A_5', key: 'K_O', behaviour: '2', modifier: 'SHIFT CAPS', outchar: 'Ô' }, + { actionId: 'A_5', key: 'K_O', behaviour: '1', modifier: 'CAPS', outchar: 'Ô' }, + { actionId: 'A_6', key: 'K_U', behaviour: '2', modifier: 'NCAPS SHIFT', outchar: 'Û' }, + { actionId: 'A_6', key: 'K_U', behaviour: '2', modifier: 'SHIFT CAPS', outchar: 'Û' }, + { actionId: 'A_6', key: 'K_U', behaviour: '1', modifier: 'CAPS', outchar: 'Û' }, + { actionId: 'A_9', key: 'K_A', behaviour: '0', modifier: 'NCAPS', outchar: 'â' } ]; [[b1_keycode_arr, b1_modifierKey_arr], - [[['49', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', 'NCAPS', 'ˆ']]], - [[['49', 'K_SPACE', 'A_0', '0', '']], [['K_SPACE', 'A_0', '0', 'NCAPS', '']]], - [[['49', 'K_SPACE', 'A_0', '', 'ˆ']], [['K_SPACE', 'A_0', '', 'NCAPS', 'ˆ']]], - [[['49', 'K_SPACE', '', '0', 'ˆ']], [['K_SPACE', '', '0', 'NCAPS', 'ˆ']]], - [[['49', '', 'A_0', '0', 'ˆ']], [['', 'A_0', '0', 'NCAPS', 'ˆ']]], - [[['', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', 'NCAPS', 'ˆ']]], - [[['', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', 'NCAPS', 'ˆ']]], - [[['', '', '', '', '']], [['', '', '', 'NCAPS', '']]], + [[{ keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', modifier: '0', outchar: 'ˆ' }], [{ actionId: 'A_0', key: 'K_SPACE', behaviour: '0', modifier: 'NCAPS', outchar: 'ˆ' }]], + [[{ keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', modifier: '', outchar: 'ˆ' }], [{ actionId: 'A_0', key: 'K_SPACE', behaviour: '0', modifier: 'NCAPS', outchar: 'ˆ' }]], + [[{ keyCode: '49', key: 'K_SPACE', actionId: '', behaviour: '0', modifier: '0', outchar: 'ˆ' }], [{ actionId: '', key: 'K_SPACE', behaviour: '0', modifier: 'NCAPS', outchar: 'ˆ' }]], + [[{ keyCode: '49', key: '', actionId: 'A_0', behaviour: '0', modifier: '0', outchar: 'ˆ' }], [{ actionId: 'A_0', key: '', behaviour: '0', modifier: 'NCAPS', outchar: 'ˆ' }]], + [[{ keyCode: '', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', modifier: '0', outchar: 'ˆ' }], [{ actionId: 'A_0', key: 'K_SPACE', behaviour: '0', modifier: 'NCAPS', outchar: 'ˆ' }]], + [[{ keyCode: '', key: '', actionId: '', behaviour: '0', modifier: '', outchar: '' }], [{ actionId: '', key: '', behaviour: '0', modifier: 'NCAPS', outchar: '' }]], ].forEach(function (values) { - const isCaps_used = true; - const string_in = "get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_oldArrayType(['" + "', '" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "', '" + values[0][0][3] + "', '" + values[0][0][4] + "'])"; - const string_out = "['" + "', '" + values[1][0][0] + "', '" + values[1][0][1] + "', '" + values[1][0][2] + "', '" + values[1][0][3] + "', '" + values[1][0][4] + "']"; - - - //console.log("FUNCTION NEEDS ", values[0]); - + const string_in = "get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(['" + "', '" + "', '" + values[0][0].keyCode + "', '" + values[0][0].key + "', '" + values[0][0].actionId + "', '" + values[0][0].modifier + "', '" + values[0][0].outchar + "'])"; + const string_out = "['" + "', '" + "', '" + values[1][0].key + "', '" + values[1][0].actionId + "', '" + "', '" + values[1][0].modifier + "', '" + values[1][0].outchar + "']"; it((JSON.stringify(values[1]).length > 60) ? 'an array of objects should return an array of objects' : string_in.padEnd(74, " ") + ' should return ' + string_out, async function () { - const result = sut.get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_oldArrayType(read, values[0], isCaps_used); + const result = sut.get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(read, values[0], isCaps_used); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); - [[[['49', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', '', 'ˆ']]], - [[['49', 'K_SPACE', 'A_0', '0', '']], [['K_SPACE', 'A_0', '0', '', '']]], - [[['', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', '', 'ˆ']]], - [[['', '', '', '', '']], [['', '', '', '', '']]], + [[{ keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', modifier: '0', outchar: 'ˆ' }, { actionId: 'A_0', key: 'K_SPACE', behaviour: '0', modifier: '', outchar: 'ˆ' }], + [{ keyCode: '', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', modifier: '0', outchar: 'ˆ' }, { actionId: 'A_0', key: 'K_SPACE', behaviour: '0', modifier: '', outchar: 'ˆ' }], + [{ keyCode: '', key: '', actionId: '', behaviour: '0', modifier: '', outchar: '' }, { actionId: '', key: '', behaviour: '0', modifier: '', outchar: '' }], ].forEach(function (values) { - const isCaps_used = false; - const string_in = "get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_oldArrayType(['" + "', '" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "', '" + values[0][0][3] + "', '" + values[0][0][4] + "'])"; - const string_out = "['" + "', '" + values[1][0][0] + "', '" + values[1][0][1] + "', '" + values[1][0][2] + "', '" + values[1][0][3] + "', '" + values[1][0][4] + "']"; + const string_in = "get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array([ '" + values[0].keyCode + "', '" + values[0].key + "', '" + values[0].actionId + "', '" + values[0].modifier + "', '" + values[0].outchar + "'])"; + const string_out = "['" + values[1].actionId + "', '" + "', '" + values[1].modifier + "', '" + values[1].key + "', '" + values[1].outchar + "']"; it(string_in.padEnd(74, " ") + ' should return ' + string_out, async function () { - const result = sut.get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_oldArrayType(read, values[0], isCaps_used); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); + const result = sut.get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(read, [values[0]], isCaps_used); + assert.equal(JSON.stringify(result), JSON.stringify([values[1]])); }); }); @@ -645,178 +488,13 @@ console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , [null, []], ].forEach(function (values) { const isCaps = true; - it(("get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_oldArrayType([" + values[0] + "])").padEnd(74, " ") + ' should return ' + "[" + values[1] + "]", async function () { - const result = sut.get_7o_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array_oldArrayType(read, values[0], isCaps); + it(("get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array([" + values[0] + "])").padEnd(74, " ") + ' should return ' + "[" + values[1] + "]", async function () { + const result = sut.get_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(read, values[0], isCaps); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); }); - //_S2 Todo finish !! - describe('get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array ', function () { - /*const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); - const sut_r = new KeylayoutFileReader(compilerTestCallbacks); - const inputFilename = makePathToFixture('../data/Test.keylayout'); - const read = sut_r.read(inputFilename);*/ - - const b1_keycode_arr = [ - // _S2 Todo write in object-fornm - - ['49', 'K_SPACE', 'A_0', '0', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '1', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '2', 'ˆ'], - ['6', 'K_Z', 'A_0', '4', 'ˆ'], - ['25', 'K_9', 'A_0', '4', 'ˆ'], - ['43', 'K_COMMA', 'A_0', '4', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '3', 'ˆ'], - ['0', 'K_A', 'A_1', '2', 'Â'], - ['0', 'K_A', 'A_1', '1', 'Â'], - ['14', 'K_E', 'A_10', '0', 'ê'], - ['34', 'K_I', 'A_11', '0', 'î'], - ['31', 'K_O', 'A_13', '0', 'ô'], - ['32', 'K_U', 'A_14', '0', 'û'], - ['14', 'K_E', 'A_2', '2', 'Ê'], - ['14', 'K_E', 'A_2', '1', 'Ê'], - ['34', 'K_I', 'A_3', '2', 'Î'], - ['34', 'K_I', 'A_3', '1', 'Î'], - ['31', 'K_O', 'A_5', '2', 'Ô'], - ['31', 'K_O', 'A_5', '1', 'Ô'], - ['32', 'K_U', 'A_6', '2', 'Û'], - ['32', 'K_U', 'A_6', '1', 'Û'], - ['0', 'K_A', 'A_9', '0', 'â']/**/ - ]; - const b1_modifierKey_arr = [ - /* ['K_SPACE', 'A_0', '0', 'NCAPS', 'ˆ'], - ... - ['K_A', 'A_9', '0', 'NCAPS', 'â'],*/ - { "search": "", "actionId": "A_0", "behaviour": "0", "modifier": "NCAPS", "key": "K_SPACE", "outchar": "ˆ" }, - { "search": "", "actionId": "A_0", "behaviour": "1", "modifier": "CAPS", "key": "K_SPACE", "outchar": "ˆ" }, - { "search": "", "actionId": "A_0", "behaviour": "2", "modifier": "NCAPS SHIFT", "key": "K_SPACE", "outchar": "ˆ" }, - { "search": "", "actionId": "A_0", "behaviour": "2", "modifier": "SHIFT CAPS", "key": "K_SPACE", "outchar": "ˆ" }, - { "search": "", "actionId": "A_0", "behaviour": "4", "modifier": "NCAPS SHIFT RALT", "key": "K_Z", "outchar": "ˆ" }, - { "search": "", "actionId": "A_0", "behaviour": "4", "modifier": "NCAPS SHIFT RALT", "key": "K_9", "outchar": "ˆ" }, - { "search": "", "actionId": "A_0", "behaviour": "4", "modifier": "NCAPS SHIFT RALT", "key": "K_COMMA", "outchar": "ˆ" }, - { "search": "", "actionId": "A_0", "behaviour": "3", "modifier": "NCAPS RALT CTRL", "key": "K_SPACE", "outchar": "ˆ" }, - { "search": "", "actionId": "A_0", "behaviour": "3", "modifier": "NCAPS CTRL", "key": "K_SPACE", "outchar": "ˆ" }, - { "search": "", "actionId": "A_1", "behaviour": "2", "modifier": "NCAPS SHIFT", "key": "K_A", "outchar": "Â" }, - { "search": "", "actionId": "A_1", "behaviour": "2", "modifier": "SHIFT CAPS", "key": "K_A", "outchar": "Â" }, - { "search": "", "actionId": "A_1", "behaviour": "1", "modifier": "CAPS", "key": "K_A", "outchar": "Â" }, - { "search": "", "actionId": "A_10", "behaviour": "0", "modifier": "NCAPS", "key": "K_E", "outchar": "ê" }, - { "search": "", "actionId": "A_11", "behaviour": "0", "modifier": "NCAPS", "key": "K_I", "outchar": "î" }, - { "search": "", "actionId": "A_13", "behaviour": "0", "modifier": "NCAPS", "key": "K_O", "outchar": "ô" }, - { "search": "", "actionId": "A_14", "behaviour": "0", "modifier": "NCAPS", "key": "K_U", "outchar": "û" }, - { "search": "", "actionId": "A_2", "behaviour": "2", "modifier": "NCAPS SHIFT", "key": "K_E", "outchar": "Ê" }, - { "search": "", "actionId": "A_2", "behaviour": "2", "modifier": "SHIFT CAPS", "key": "K_E", "outchar": "Ê" }, - { "search": "", "actionId": "A_2", "behaviour": "1", "modifier": "CAPS", "key": "K_E", "outchar": "Ê" }, - { "search": "", "actionId": "A_3", "behaviour": "2", "modifier": "NCAPS SHIFT", "key": "K_I", "outchar": "Î" }, - { "search": "", "actionId": "A_3", "behaviour": "2", "modifier": "SHIFT CAPS", "key": "K_I", "outchar": "Î" }, - { "search": "", "actionId": "A_3", "behaviour": "1", "modifier": "CAPS", "key": "K_I", "outchar": "Î" }, - { "search": "", "actionId": "A_5", "behaviour": "2", "modifier": "NCAPS SHIFT", "key": "K_O", "outchar": "Ô" }, - { "search": "", "actionId": "A_5", "behaviour": "2", "modifier": "SHIFT CAPS", "key": "K_O", "outchar": "Ô" }, - { "search": "", "actionId": "A_5", "behaviour": "1", "modifier": "CAPS", "key": "K_O", "outchar": "Ô" }, - { "search": "", "actionId": "A_6", "behaviour": "2", "modifier": "NCAPS SHIFT", "key": "K_U", "outchar": "Û" }, - { "search": "", "actionId": "A_6", "behaviour": "2", "modifier": "SHIFT CAPS", "key": "K_U", "outchar": "Û" }, - { "search": "", "actionId": "A_6", "behaviour": "1", "modifier": "CAPS", "key": "K_U", "outchar": "Û" }, - { "search": "", "actionId": "A_9", "behaviour": "0", "modifier": "NCAPS", "key": "K_A", "outchar": "â" } - ]; - - [[b1_keycode_arr, b1_modifierKey_arr], - [[['49', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', 'NCAPS', 'ˆ']]], - [[['49', 'K_SPACE', 'A_0', '0', '']], [['K_SPACE', 'A_0', '0', 'NCAPS', '']]], - [[['49', 'K_SPACE', 'A_0', '', 'ˆ']], [['K_SPACE', 'A_0', '', 'NCAPS', 'ˆ']]], - [[['49', 'K_SPACE', '', '0', 'ˆ']], [['K_SPACE', '', '0', 'NCAPS', 'ˆ']]], - [[['49', '', 'A_0', '0', 'ˆ']], [['', 'A_0', '0', 'NCAPS', 'ˆ']]], - [[['', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', 'NCAPS', 'ˆ']]], - [[['', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', 'NCAPS', 'ˆ']]], - [[['', '', '', '', '']], [['', '', '', 'NCAPS', '']]], - ].forEach(function (values) { - - /* // _S2 const isCaps_used = true; - const string_in = "get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(['" + "', '" + values[0][0] + "', '" + values[0][1] + "', '" + values[0][2] + "', '" + values[0][3] + "', '" + values[0][4] + "'])"; - const string_out = "['" + "', '" + values[1][0] + "', '" + values[1][1] + "', '" + values[1][2] + "', '" + values[1][3] + "', '" + values[1][4] + "']"; - - it((JSON.stringify(values[1]).length > 60) ? 'an array of objects should return an array of objects' : - string_in.padEnd(74, " ") + ' should return ' + string_out, async function () { - const result = sut.get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(read, values[0], isCaps_used); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - });*/ - }); - - [[[['49', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', '', 'ˆ']]], - [[['49', 'K_SPACE', 'A_0', '0', '']], [['K_SPACE', 'A_0', '0', '', '']]], - [[['', 'K_SPACE', 'A_0', '0', 'ˆ']], [['K_SPACE', 'A_0', '0', '', 'ˆ']]], - [[['', '', '', '', '']], [['', '', '', '', '']]], - ].forEach(function (values) { - - /* const isCaps_used = false; // _S2 add again - const string_in = "get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(['" + "', '" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "', '" + values[0][0][3] + "', '" + values[0][0][4] + "'])"; - const string_out = "['" + "', '" + values[1][0][0] + "', '" + values[1][0][1] + "', '" + values[1][0][2] + "', '" + values[1][0][3] + "', '" + values[1][0][4] + "']"; - - it(string_in.padEnd(74, " ") + ' should return ' + string_out, async function () { - const result = sut.get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(read, values[0], isCaps_used); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - });*/ - }); - - [[[], []], - [undefined, []], - [null, []], - ].forEach(function (values) { - /* const isCaps = true; - it(("get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array([" + values[0] + "])").padEnd(74, " ") + ' should return ' + "[" + values[1] + "]", async function () { - const result = sut.get_7_KeyMBehaviourModOutputArray__from__KeyActionBehaviourOutput_array(read, values[0], isCaps); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - });*/ - }); - }); - - - describe('get_6o_ActionStateOutput_array__From__ActionState_oldArrayType ', function () { - const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); - const sut_r = new KeylayoutFileReader(compilerTestCallbacks); - const inputFilename = makePathToFixture('../data/Test.keylayout'); - const read = sut_r.read(inputFilename); - - [['1', [ - ['A_0', '1', 'ˆ'], - ['A_1', '1', 'Â'], - ['A_10', '1', 'ê'], - ['A_11', '1', 'î'], - ['A_13', '1', 'ô'], - ['A_14', '1', 'û'], - ['A_2', '1', 'Ê'], - ['A_3', '1', 'Î'], - ['A_5', '1', 'Ô'], - ['A_6', '1', 'Û'], - ['A_9', '1', 'â']],], - ['2', [ - ['A_0', '2', '`'], - ['A_1', '2', 'À'], - ['A_10', '2', 'è'], - ['A_11', '2', 'ì'], - ['A_13', '2', 'ò'], - ['A_14', '2', 'ù'], - ['A_2', '2', 'È'], - ['A_3', '2', 'Ì'], - ['A_5', '2', 'Ò'], - ['A_6', '2', 'Ù'], - ['A_9', '2', 'à']],], - ['789', [],], - ['', [],], - [' ', [],], - [123, [],], - [null, [],], - [undefined, [],], - ].forEach(function (values) { - it((JSON.stringify(values[1]).length > 30) ? - ("get_6o_ActionStateOutput_array__From__ActionState_oldArrayType('" + values[0] + "')").padEnd(60, " ") + ' should return an array of objects' : - ("get_6o_ActionStateOutput_array__From__ActionState_oldArrayType('" + values[0] + "')").padEnd(60, " ") + ' should return ' + "'" + JSON.stringify(values[1]) + "'", async function () { - const result = sut.get_6o_ActionStateOutput_array__From__ActionState_oldArrayType(read, String(values[0])); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - }); - }); - }); - - describe('get_6_ActionStateOutput_array__From__ActionState ', function () { + describe('get_ActionStateOutput_array__From__ActionState ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); @@ -856,16 +534,14 @@ console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , [undefined, [],], ].forEach(function (values) { it((JSON.stringify(values[1]).length > 30) ? - ("get_6_ActionStateOutput_array__From__ActionState('" + values[0] + "')").padEnd(60, " ") + ' should return an array of objects' : - ("get_6_ActionStateOutput_array__From__ActionState('" + values[0] + "')").padEnd(60, " ") + ' should return ' + "'" + JSON.stringify(values[1]) + "'", async function () { - const result = sut.get_6_ActionStateOutput_array__From__ActionState(read, String(values[0])); + ("get_ActionStateOutput_array__From__ActionState('" + values[0] + "')").padEnd(60, " ") + ' should return an array of objects' : + ("get_ActionStateOutput_array__From__ActionState('" + values[0] + "')").padEnd(60, " ") + ' should return ' + "'" + JSON.stringify(values[1]) + "'", async function () { + const result = sut.get_ActionStateOutput_array__From__ActionState(read, String(values[0])); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); }); - - - describe('get_8_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput ', function () { + describe('get_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); @@ -874,254 +550,136 @@ console.log("XXX get_3_Modifier_array__From__KeyModifier_array(['" , values[0] , [ ['A_1', 'A', true, - [{ "search": "A_1", "outchar": "A", "actionId": "A_1", "behaviour": "1", "key": "K_A", "modifier": "CAPS" }, - { "search": "A_1", "outchar": "A", "actionId": "A_1", "behaviour": "2", "key": "K_A", "modifier": "NCAPS SHIFT" }, - { "search": "A_1", "outchar": "A", "actionId": "A_1", "behaviour": "2", "key": "K_A", "modifier": "SHIFT CAPS" }] + [{ "outchar": "A", "actionId": "A_1", "behaviour": "1", "key": "K_A", "modifier": "CAPS" }, + { "outchar": "A", "actionId": "A_1", "behaviour": "2", "key": "K_A", "modifier": "NCAPS SHIFT" }, + { "outchar": "A", "actionId": "A_1", "behaviour": "2", "key": "K_A", "modifier": "SHIFT CAPS" }] ], ['A_1', 'A', false, - [{ "search": "A_1", "outchar": "A", "actionId": "A_1", "behaviour": "1", "key": "K_A", "modifier": "CAPS" }, - { "search": "A_1", "outchar": "A", "actionId": "A_1", "behaviour": "2", "key": "K_A", "modifier": "SHIFT" }, - { "search": "A_1", "outchar": "A", "actionId": "A_1", "behaviour": "2", "key": "K_A", "modifier": "SHIFT CAPS" }] + [{ "outchar": "A", "actionId": "A_1", "behaviour": "1", "key": "K_A", "modifier": "CAPS" }, + { "outchar": "A", "actionId": "A_1", "behaviour": "2", "key": "K_A", "modifier": "SHIFT" }, + { "outchar": "A", "actionId": "A_1", "behaviour": "2", "key": "K_A", "modifier": "SHIFT CAPS" }] ], - ['A_9', 'a', true, [{ "search": "A_9", "outchar": "a", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "NCAPS" }]], - ['A_9', 'a', false, [{ "search": "A_9", "outchar": "a", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "" }]], - ['A_9', 'a', , [{ "search": "A_9", "outchar": "a", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "" }]], - ['A_9', '', true, [{ "search": "A_9", "outchar": "", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "NCAPS" }]], - ['A_9', '', false, [{ "search": "A_9", "outchar": "", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "" }]], + ['A_9', 'a', true, [{ "outchar": "a", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "NCAPS" }]], + ['A_9', 'a', false, [{ "outchar": "a", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "" }]], + ['A_9', 'a', , [{ "outchar": "a", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "" }]], + ['A_9', '', true, [{ "outchar": "", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "NCAPS" }]], + ['A_9', '', false, [{ "outchar": "", "actionId": "A_9", "behaviour": "0", "key": "K_A", "modifier": "" }]], ['', 'a', true, []], ['', 'a', false, []], ['', '', , []], ].forEach(function (values) { it((JSON.stringify(values[3]).length > 35) ? - ("get_8_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput('" + values[0] + "', '" + values[1] + "', " + values[2] + ")").padEnd(67, " ") + ' should return an array of objects' : - ("get_8_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput('" + values[0] + "', '" + values[1] + "', " + values[2] + ")").padEnd(67, " ") + ' should return ' + "'" + JSON.stringify(values[3]) + "'", async function () { - const result = sut.get_8_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput(read, converted.arrayOf_Modifiers, String(values[0]), String(values[1]), Boolean(values[2])); - console.log("result ", result); - + ("get_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput('" + values[0] + "', '" + values[1] + "', " + values[2] + ")").padEnd(67, " ") + ' should return an array of objects' : + ("get_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput('" + values[0] + "', '" + values[1] + "', " + values[2] + ")").padEnd(67, " ") + ' should return ' + "'" + JSON.stringify(values[3]) + "'", async function () { + const result = sut.get_ActionOutputBehaviourKeyModi_From__ActionIDStateOutput(read, converted.arrayOf_Modifiers, String(values[0]), String(values[1]), Boolean(values[2])); assert.equal(JSON.stringify(result), JSON.stringify(values[3])); }); }); }); - - describe('get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType ', function () { + describe('get_KeyActionOutput_array__From__ActionStateOutput_array ', function () { const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); const sut_r = new KeylayoutFileReader(compilerTestCallbacks); const inputFilename = makePathToFixture('../data/Test.keylayout'); const read = sut_r.read(inputFilename); - const b6_actionId_arr = [ - ['A_0', '1', 'ˆ'], - ['A_1', '1', 'Â'], - ['A_10', '1', 'ê'], - ['A_11', '1', 'î'], - ['A_13', '1', 'ô'], - ['A_14', '1', 'û'], - ['A_2', '1', 'Ê'], - ['A_3', '1', 'Î'], - ['A_5', '1', 'Ô'], - ['A_6', '1', 'Û'], - ['A_9', '1', 'â'] + const b6_actionId_arr: idStateOutput_object[] = [ + { "id": "A_0", "state": "1", "output": "ˆ" }, + { "id": "A_1", "state": "1", "output": "Â" }, + { "id": "A_10", "state": "1", "output": "ê" }, + { "id": "A_11", "state": "1", "output": "î" }, + { "id": "A_13", "state": "1", "output": "ô" }, + { "id": "A_14", "state": "1", "output": "û" }, + { "id": "A_2", "state": "1", "output": "Ê" }, + { "id": "A_3", "state": "1", "output": "Î" }, + { "id": "A_5", "state": "1", "output": "Ô" }, + { "id": "A_6", "state": "1", "output": "Û" }, + { "id": "A_9", "state": "1", "output": "â" } ]; - const b1_keycode_arr = [ - ['49', 'K_SPACE', 'A_0', '0', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '1', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '2', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '3', 'ˆ'], - ['6', 'K_Z', 'A_0', '4', 'ˆ'], - ['25', 'K_9', 'A_0', '4', 'ˆ'], - ['43', 'K_COMMA', 'A_0', '4', 'ˆ'], - ['0', 'K_A', 'A_1', '1', 'Â'], - ['0', 'K_A', 'A_1', '2', 'Â'], - ['14', 'K_E', 'A_10', '0', 'ê'], - ['34', 'K_I', 'A_11', '0', 'î'], - ['31', 'K_O', 'A_13', '0', 'ô'], - ['32', 'K_U', 'A_14', '0', 'û'], - ['14', 'K_E', 'A_2', '1', 'Ê'], - ['14', 'K_E', 'A_2', '2', 'Ê'], - ['34', 'K_I', 'A_3', '1', 'Î'], - ['34', 'K_I', 'A_3', '2', 'Î'], - ['31', 'K_O', 'A_5', '1', 'Ô'], - ['31', 'K_O', 'A_5', '2', 'Ô'], - ['32', 'K_U', 'A_6', '1', 'Û'], - ['32', 'K_U', 'A_6', '2', 'Û'], - ['0', 'K_A', 'A_9', '0', 'â'] + const b1_keycode_arr: allArrayContents_object[] = [ + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '1', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '2', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '3', outchar: 'ˆ' }, + { keyCode: '6', key: 'K_Z', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' }, + { keyCode: '25', key: 'K_9', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' }, + { keyCode: '43', key: 'K_COMMA', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' }, + { keyCode: '0', key: 'K_A', actionId: 'A_1', behaviour: '1', outchar: 'Â' }, + { keyCode: '0', key: 'K_A', actionId: 'A_1', behaviour: '2', outchar: 'Â' }, + { keyCode: '14', key: 'K_E', actionId: 'A_10', behaviour: '0', outchar: 'ê' }, + { keyCode: '34', key: 'K_I', actionId: 'A_11', behaviour: '0', outchar: 'î' }, + { keyCode: '31', key: 'K_O', actionId: 'A_13', behaviour: '0', outchar: 'ô' }, + { keyCode: '32', key: 'K_U', actionId: 'A_14', behaviour: '0', outchar: 'û' }, + { keyCode: '14', key: 'K_E', actionId: 'A_2', behaviour: '1', outchar: 'Ê' }, + { keyCode: '14', key: 'K_E', actionId: 'A_2', behaviour: '2', outchar: 'Ê' }, + { keyCode: '34', key: 'K_I', actionId: 'A_3', behaviour: '1', outchar: 'Î' }, + { keyCode: '34', key: 'K_I', actionId: 'A_3', behaviour: '2', outchar: 'Î' }, + { keyCode: '31', key: 'K_O', actionId: 'A_5', behaviour: '1', outchar: 'Ô' }, + { keyCode: '31', key: 'K_O', actionId: 'A_5', behaviour: '2', outchar: 'Ô' }, + { keyCode: '32', key: 'K_U', actionId: 'A_6', behaviour: '1', outchar: 'Û' }, + { keyCode: '32', key: 'K_U', actionId: 'A_6', behaviour: '2', outchar: 'Û' }, + { keyCode: '0', key: 'K_A', actionId: 'A_9', behaviour: '0', outchar: 'â' } ]; [[b6_actionId_arr, b1_keycode_arr], ].forEach(function (values) { - it(("get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType([['" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "'],..])").padEnd(73, " ") + '1 should return an array of objects', async function () { - const result = sut.get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(read, values[0]); + it(("get_KeyActionOutput_array__From__ActionStateOutput_array([['" + JSON.stringify(values[0]) + "'],..])").padEnd(73, " ") + '1 should return an array of objects', async function () { + const result = sut.get_KeyActionOutput_array__From__ActionStateOutput_array(read, values[0] as idStateOutput_object[]); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); const oneEntryResult = [ - ['49', 'K_SPACE', 'A_0', '0', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '1', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '2', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '3', 'ˆ'], - ['6', 'K_Z', 'A_0', '4', 'ˆ'], - ['25', 'K_9', 'A_0', '4', 'ˆ'], - ['43', 'K_COMMA', 'A_0', '4', 'ˆ'] + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '1', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '2', outchar: 'ˆ' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '3', outchar: 'ˆ' }, + { keyCode: '6', key: 'K_Z', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' }, + { keyCode: '25', key: 'K_9', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' }, + { keyCode: '43', key: 'K_COMMA', actionId: 'A_0', behaviour: '4', outchar: 'ˆ' } ]; + const oneEntryResultNoOutput = [ - ['49', 'K_SPACE', 'A_0', '0', ''], - ['49', 'K_SPACE', 'A_0', '1', ''], - ['49', 'K_SPACE', 'A_0', '2', ''], - ['49', 'K_SPACE', 'A_0', '3', ''], - ['6', 'K_Z', 'A_0', '4', ''], - ['25', 'K_9', 'A_0', '4', ''], - ['43', 'K_COMMA', 'A_0', '4', ''] + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '0', outchar: '' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '1', outchar: '' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '2', outchar: '' }, + { keyCode: '49', key: 'K_SPACE', actionId: 'A_0', behaviour: '3', outchar: '' }, + { keyCode: '6', key: 'K_Z', actionId: 'A_0', behaviour: '4', outchar: '' }, + { keyCode: '25', key: 'K_9', actionId: 'A_0', behaviour: '4', outchar: '' }, + { keyCode: '43', key: 'K_COMMA', actionId: 'A_0', behaviour: '4', outchar: '' }, ]; - [[[['A_0', '1', 'ˆ']], oneEntryResult], - [[['A_0', '1', '']], oneEntryResultNoOutput], - [[['A_0', '', 'ˆ']], oneEntryResult], + [[[{ "id": "A_0", "state": "1", "output": "ˆ" }], oneEntryResult], + [[{ "id": "A_0", "state": "1", "output": "" }], oneEntryResultNoOutput], + [[{ "id": "A_0", "state": "", "output": "ˆ" }], oneEntryResult], ].forEach(function (values) { - it(("get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(['" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "'])").padEnd(73, " ") + '2 should return an array of objects', async function () { - const result = sut.get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(read, values[0]); + it(("get_KeyActionOutput_array__From__ActionStateOutput_array(['" + JSON.stringify(values[0]) + "'])").padEnd(73, " ") + '2 should return an array of objects', async function () { + const result = sut.get_KeyActionOutput_array__From__ActionStateOutput_array(read, values[0] as idStateOutput_object[]); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); - [[[['', '1', 'ˆ']], []], - [[['', '', '']], []], - [[[' ', ' ', '']], []], + [[[{ "id": "", "state": "1", "output": "ˆ" }], []], + [[{ "id": "", "state": "", "output": "" }], []], + [[{ "id": " ", "state": " ", "output": "" }], []], + ].forEach(function (values) { - it(("get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(['" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "'])").padEnd(73, " ") + ' should return ' + "'[" + values[1] + "]'", async function () { - const result = sut.get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(read, values[0]); + it(("get_KeyActionOutput_array__From__ActionStateOutput_array(" + JSON.stringify(values[0]) + ")").padEnd(73, " ") + ' should return ' + "'[" + JSON.stringify(values[1]) + "]'", async function () { + const result = sut.get_KeyActionOutput_array__From__ActionStateOutput_array(read, values[0] as idStateOutput_object[]); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); - [[[], []], + [[, []], [undefined, []], [null, []], ].forEach(function (values) { - it(("get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(" + values[0] + ")").padEnd(73, " ") + ' should return ' + "'[" + values[1] + "]'", async function () { - const result = sut.get_5o_KeyActionOutput_array__From__ActionStateOutput_array_oldArrayType(read, values[0]); + it(("get_KeyActionOutput_array__From__ActionStateOutput_array(" + JSON.stringify(values[0]) + ")").padEnd(73, " ") + ' should return ' + "'[" + JSON.stringify(values[1]) + "]'", async function () { + const result = sut.get_KeyActionOutput_array__From__ActionStateOutput_array(read, values[0] as idStateOutput_object[]); assert.equal(JSON.stringify(result), JSON.stringify(values[1])); }); }); }); - describe('get_5_KeyActionOutput_array__From__ActionStateOutput_array ', function () { - /* const sut = new KeylayoutToKmnConverter(compilerTestCallbacks, compilerTestOptions); - const sut_r = new KeylayoutFileReader(compilerTestCallbacks); - const inputFilename = makePathToFixture('../data/Test.keylayout'); - const read = sut_r.read(inputFilename); - - const b6_actionId_arr = [ -*/ - - // [{ "id": "A_0", "state": "1", "output": "ˆ" }], - // [{ "id": "A_1", "state": "1", "output": "Â" }], - // [{ "id": "A_10", "state": "1", "output": "ê" }], - // [{ "id": "A_11", "state": "1", "output": "î" }], - // [{ "id": "A_13", "state": "1", "output": "ô" }], - // [{ "id": "A_14", "state": "1", "output": "û" }], - // // [{ "id": "A_2", "state": "1", "output": "Ê" }], - // [{ "id": "A_3", "state": "1", "output": "Î" }], - // [{ "id": "A_5", "state": "1", "output": "Ô" }], - // [{ "id": "A_6", "state": "1", "output": "Û" }], - // [{ "id": "A_9", "state": "1", "output": "â" }] - - /* ['A_0', '1', 'ˆ'], - ['A_1', '1', 'Â'], - ['A_10', '1', 'ê'], - ['A_11', '1', 'î'], - ['A_13', '1', 'ô'], - ['A_14', '1', 'û'], - ['A_2', '1', 'Ê'], - ['A_3', '1', 'Î'], - ['A_5', '1', 'Ô'], - ['A_6', '1', 'Û'], - ['A_9', '1', 'â'] - ]; - const b1_keycode_arr = [ - ['49', 'K_SPACE', 'A_0', '0', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '1', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '2', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '3', 'ˆ'], - ['6', 'K_Z', 'A_0', '4', 'ˆ'], - ['25', 'K_9', 'A_0', '4', 'ˆ'], - ['43', 'K_COMMA', 'A_0', '4', 'ˆ'], - - ['0', 'K_A', 'A_1', '1', 'Â'], - ['0', 'K_A', 'A_1', '2', 'Â'], - ['14', 'K_E', 'A_10', '0', 'ê'], - ['34', 'K_I', 'A_11', '0', 'î'], - ['31', 'K_O', 'A_13', '0', 'ô'], - ['32', 'K_U', 'A_14', '0', 'û'], - ['14', 'K_E', 'A_2', '1', 'Ê'], - ['14', 'K_E', 'A_2', '2', 'Ê'], - ['34', 'K_I', 'A_3', '1', 'Î'], - ['34', 'K_I', 'A_3', '2', 'Î'], - ['31', 'K_O', 'A_5', '1', 'Ô'], - ['31', 'K_O', 'A_5', '2', 'Ô'], - ['32', 'K_U', 'A_6', '1', 'Û'], - ['32', 'K_U', 'A_6', '2', 'Û'], - ['0', 'K_A', 'A_9', '0', 'â'] - ]; - - [[b6_actionId_arr, b1_keycode_arr], - ].forEach(function (values) { - it(("get_5_KeyActionOutput_array__From__ActionStateOutput_array([['" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "'],..])").padEnd(73, " ") + '1 should return an array of objects', async function () { - const result = sut.get_5_KeyActionOutput_array__From__ActionStateOutput_array(read, values[0]); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - }); - }); - - const oneEntryResult = [ - ['49', 'K_SPACE', 'A_0', '0', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '1', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '2', 'ˆ'], - ['49', 'K_SPACE', 'A_0', '3', 'ˆ'], - ['6', 'K_Z', 'A_0', '4', 'ˆ'], - ['25', 'K_9', 'A_0', '4', 'ˆ'], - ['43', 'K_COMMA', 'A_0', '4', 'ˆ'] - ]; - const oneEntryResultNoOutput = [ - ['49', 'K_SPACE', 'A_0', '0', ''], - ['49', 'K_SPACE', 'A_0', '1', ''], - ['49', 'K_SPACE', 'A_0', '2', ''], - ['49', 'K_SPACE', 'A_0', '3', ''], - ['6', 'K_Z', 'A_0', '4', ''], - ['25', 'K_9', 'A_0', '4', ''], - ['43', 'K_COMMA', 'A_0', '4', ''] - ]; - - [[[['A_0', '1', 'ˆ']], oneEntryResult], - [[['A_0', '1', '']], oneEntryResultNoOutput], - [[['A_0', '', 'ˆ']], oneEntryResult], - ].forEach(function (values) { - it(("get_5_KeyActionOutput_array__From__ActionStateOutput_array(['" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "'])").padEnd(73, " ") + '2 should return an array of objects', async function () { - const result = sut.get_5_KeyActionOutput_array__From__ActionStateOutput_array(read, values[0]); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - }); - }); - - [[[['', '1', 'ˆ']], []], - [[['', '', '']], []], - [[[' ', ' ', '']], []], - ].forEach(function (values) { - it(("get_5_KeyActionOutput_array__From__ActionStateOutput_array(['" + values[0][0][0] + "', '" + values[0][0][1] + "', '" + values[0][0][2] + "'])").padEnd(73, " ") + ' should return ' + "'[" + values[1] + "]'", async function () { - const result = sut.get_5_KeyActionOutput_array__From__ActionStateOutput_array(read, values[0]); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - }); - }); - - [[[], []], - [undefined, []], - [null, []], - ].forEach(function (values) { - it(("get_5_KeyActionOutput_array__From__ActionStateOutput_array(" + values[0] + ")").padEnd(73, " ") + ' should return ' + "'[" + values[1] + "]'", async function () { - const result = sut.get_5_KeyActionOutput_array__From__ActionStateOutput_array(read, values[0]); - assert.equal(JSON.stringify(result), JSON.stringify(values[1])); - }); - });*/ - }); - }); diff --git a/developer/src/kmc-convert/test/kmn-file-writer.tests.ts b/developer/src/kmc-convert/test/kmn-file-writer.tests.ts index 9afaae5b7b..65fbaf5029 100644 --- a/developer/src/kmc-convert/test/kmn-file-writer.tests.ts +++ b/developer/src/kmc-convert/test/kmn-file-writer.tests.ts @@ -36,7 +36,6 @@ describe('KmnFileWriter', function () { const converted_unavailable = sut.convert_bound.convert(read_unavailable, inputFilename_unavailable.replace(/\.keylayout$/, '.kmn')); it('write() should return true (no error) if written', async function () { - const result = sut_w.write(converted); assert.isTrue(result); });