From f74e69682d78635f15fe6f5a145d1e75a2cb74df Mon Sep 17 00:00:00 2001 From: Sabine Date: Wed, 12 Oct 2022 17:22:38 +0200 Subject: [PATCH] chore(developer): add some more keyboardtests --- common/test/keyboards/invalid/README.md | 52 ++-- ...rongCopyrightChar_and_WrongErrNrInName.kmn | 271 +++++++++++++++++ ...0133_balochi_phonetic_WrongErrNrInName.kmn | 136 +++++++++ .../source/CERR_4017_balochi_phonetic.kmn | 2 +- ...har_and_NoErrorThrownButErrorSpecified.kmn | 271 +++++++++++++++++ .../source/CERR_4034_balochi_phonetic.kmn | 130 +++++++++ ...tic_WithNoErrorThrownButErrorSpecified.kmn | 133 +++++++++ ...rongCopyrightChar_AndMissingErNrInName.kmn | 272 ++++++++++++++++++ ...balochi_phonetic_WrongNamingConvention.kmn | 136 +++++++++ .../get_test_source_exclude_some_kmn.bat | 4 +- developer/kmcompx/tests/kmcompxtest.cpp | 2 +- 11 files changed, 1386 insertions(+), 23 deletions(-) create mode 100644 common/test/keyboards/invalid/source/CERR_1234_sil_yoruba8_WrongCopyrightChar_and_WrongErrNrInName.kmn create mode 100644 common/test/keyboards/invalid/source/CERR_40133_balochi_phonetic_WrongErrNrInName.kmn create mode 100644 common/test/keyboards/invalid/source/CERR_402D_sil_yoruba8_WrongCopyrightChar_and_NoErrorThrownButErrorSpecified.kmn create mode 100644 common/test/keyboards/invalid/source/CERR_4034_balochi_phonetic.kmn create mode 100644 common/test/keyboards/invalid/source/CERR_4040_balochi_phonetic_WithNoErrorThrownButErrorSpecified.kmn create mode 100644 common/test/keyboards/invalid/source/sil_yoruba8_WrongCopyrightChar_AndMissingErNrInName.kmn create mode 100644 common/test/keyboards/invalid/source/xCERR_4034_balochi_phonetic_WrongNamingConvention.kmn diff --git a/common/test/keyboards/invalid/README.md b/common/test/keyboards/invalid/README.md index 80c09d3240..e9ef0bd4b5 100644 --- a/common/test/keyboards/invalid/README.md +++ b/common/test/keyboards/invalid/README.md @@ -1,29 +1,43 @@ -#----------------------------------------- -# Tests for kmcompxtest() -#----------------------------------------- +# **Tests for kmcompxtest()** +
This folder contains several kmn-files that are used for testing resulting Errorcodes. -These tests are all copied from balochi_phonetic and contain alterations of the data to produce (at least) 1 Error. -#----------------------------------------- -# Naming Convention: -# CERR_404D_balochi_phonetic.kmn -#----------------------------------------- +Most of these tests are copied from balochi_phonetic and contain alterations of the data to produce (at least) 1 Error. +
+
+ +--- + +## Naming Convention of kmn-files for using with kmcompxtest() + + CERR_404D_balochi_phonetic.kmn + The naming convention of the files is as follows: -All Files MUST start with CERR_ followed by 4 characters and an underscore. -After the second underscore all combination of char can be used. -The 4 characters following CERR_ correspond to the last 4 digits of the Error-Code which is expected to be produced by this file. -( e.g. CERR_404D_balochi_phonetic.kmn should produce Error 0x0000404D). +* All Files **MUST** start with CERR_ followed by 4 characters and an underscore. -#----------------------------------------- -While running kmcompxtest extracts the 4 chars of the Filename and compares them to the actual Error found. -If they correspond the test will be marked as OK. (Code 0) -If the file is supposed to produce an Error and does not the test will be marked as FAILED (Code 1) -If the filename is not correct the test will be marked as FAILED (Code 99) -If more than 1 Error is produced only the Error coded in the Filename will be detected -#----------------------------------------- +* After the second underscore all combination of char can be used. + +* The 4 characters following CERR_ correspond to the last 4 digits of the Error-Code which is expected to be produced by this file. + + ( e.g. CERR_404D_balochi_phonetic.kmn should produce Error 0x0000404D). + +
+ +--- +
+ +While running kmcompxtest extracts the 4 chars from the Filename and compares them to the actual Error found. + +* If they correspond the test will be marked as OK. (Code 0) + +* If the file is supposed to produce an Error and does not the test will be marked as FAILED (Code 1) + +* If the filename is not correct the test will be marked as FAILED (Code 1) + +* If more than 1 Error is produced only the Error coded in the Filename will be detected diff --git a/common/test/keyboards/invalid/source/CERR_1234_sil_yoruba8_WrongCopyrightChar_and_WrongErrNrInName.kmn b/common/test/keyboards/invalid/source/CERR_1234_sil_yoruba8_WrongCopyrightChar_and_WrongErrNrInName.kmn new file mode 100644 index 0000000000..eea1792795 --- /dev/null +++ b/common/test/keyboards/invalid/source/CERR_1234_sil_yoruba8_WrongCopyrightChar_and_WrongErrNrInName.kmn @@ -0,0 +1,271 @@ +c ***** This test will produce 2 Errors: *************************** +c ***** 1) it will be marked as FAIL when run in kmcompxtest ******* +c ***** as a non-existing ErrorNr (0x00001234) is specified ***** +c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced ******* +c ****************************************************************** + +store(&VERSION) '10.0' +c ***** CERR_InvalidCharacter 0x00004034 *************************** +store(&NAME) 'Yorb 8' +store(&MESSAGE) 'A simple Unicode keyboard for Yorb, with the option to use either the modern dot or the traditional bar under the letters e, o, and s.' +store(©RIGHT) ' 2012-2020 SIL International' +c ****************************************************************** +store(&mnemoniclayout) '1' +0024 +c store(&WINDOWSLANGUAGES) 'x046A' +c store(&LANGUAGE) 'x046A' +c store(ÐNOLOGUECODE) 'yor' + +store(&BITMAP) 'sil_yoruba8.ico' +store(&VISUALKEYBOARD) 'sil_yoruba8.kvks' +store(&TARGETS) 'desktop' +store(&KEYBOARDVERSION) '1.1' + +begin Unicode > use(main) + +group(main) using keys +c =========== +c ==Options== +c =========== +store(style) 'dot' +if(style='dot') + [CTRL '.'] > set(style='bar') +if(style='bar') + [CTRL '.'] > set(style='dot') + +c ========== +c ==Stores== +c ========== +c Letters +store(base) 'a' 'e' 'i' 'o' 'u' 'A' 'E' 'I' 'O' 'U' +store(grv) U+00E0 U+00E8 U+00EC U+00F2 U+00F9 U+00C0 U+00C8 U+00CC U+00D2 U+00D9 +store(act) U+00E1 U+00E9 U+00ED U+00F3 U+00FA U+00C1 U+00C9 U+00CD U+00D3 U+00DA +store(crc) U+00E2 U+00EA U+00EE U+00F4 U+00FB U+00C2 U+00CA U+00CE U+00D4 U+00DB +store(crn) U+01CE U+011B U+01D0 U+01D2 U+01D4 U+01CD U+011A U+01CF U+01D1 U+01D3 +store(mac) U+0101 U+0113 U+012B U+014D U+016B U+0100 U+0112 U+012A U+014C U+016A + +store(grv.all) outs(base) outs(grv) outs(grv) outs(grv) outs(grv) outs(grv) +store(act.all) outs(base) outs(act) outs(act) outs(act) outs(act) outs(act) +store(crc.all) outs(base) outs(crc) outs(crc) outs(crc) outs(crc) outs(crc) +store(crn.all) outs(base) outs(crn) outs(crn) outs(crn) outs(crn) outs(crn) +store(mac.all) outs(base) outs(mac) outs(mac) outs(mac) outs(mac) outs(mac) + +store(not.grv) outs(grv) outs(base) outs(act) outs(crc) outs(crn) outs(mac) +store(not.act) outs(act) outs(base) outs(grv) outs(crc) outs(crn) outs(mac) +store(not.crc) outs(crc) outs(base) outs(grv) outs(act) outs(crn) outs(mac) +store(not.crn) outs(crn) outs(base) outs(grv) outs(act) outs(crc) outs(mac) +store(not.mac) outs(mac) outs(base) outs(grv) outs(act) outs(crc) outs(crn) + +store(bar) 'e' 'o' 's' 'E' 'O' 'S' +store(v.bar) 'e' 'o' 'E' 'O' + +store(dot) U+1EB9 U+1ECD U+1EB8 U+1ECC +store(nsl) 'm' 'n' 'M' 'N' +store(dot+nsl) outs(dot) outs(nsl) + +c Accents +store(ac.grv) U+0300 +store(ac.act) U+0301 +store(ac.crc) U+0302 +store(ac.crn) U+030C +store(ac.mac) U+0304 + +store(ac.all) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac) + +store(ac.grv.all) nul outs(ac.grv) outs(ac.grv) outs(ac.grv) outs(ac.grv) +store(ac.act.all) nul outs(ac.act) outs(ac.act) outs(ac.act) outs(ac.act) +store(ac.crc.all) nul outs(ac.crc) outs(ac.crc) outs(ac.crc) outs(ac.crc) +store(ac.crn.all) nul outs(ac.crn) outs(ac.crn) outs(ac.crn) outs(ac.crn) +store(ac.mac.all) nul outs(ac.mac) outs(ac.mac) outs(ac.mac) outs(ac.mac) + +store(not.ac.grv) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac) +store(not.ac.act) outs(ac.act) outs(ac.grv) outs(ac.crc) outs(ac.crn) outs(ac.mac) +store(not.ac.crc) outs(ac.crc) outs(ac.grv) outs(ac.act) outs(ac.crn) outs(ac.mac) +store(not.ac.crn) outs(ac.crn) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.mac) +store(not.ac.mac) outs(ac.mac) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) + +c Keys +store(key.grv) '[' +store(key.act) ']' +store(key.crc) '{' +store(key.crn) '}' +store(key.mac) '|' + +store(key.all) outs(key.grv) outs(key.act) outs(key.crc) outs(key.crn) outs(key.mac) + +c ================ +c ==Basic Output== +c ================ +c Unshifted QWERTY US ++ '=' > '=' ++ '-' > '-' ++ '0' > '0' ++ '9' > '9' ++ '8' > '8' ++ '7' > '7' ++ '6' > '6' ++ '5' > '5' ++ '4' > '4' ++ '3' > '3' ++ '2' > '2' ++ '1' > '1' ++ '`' > dk(un) c types underlying character +dk(un) + '`' > '`' + ++ '\' > '\' ++ ']' > '' c acute accent +dk(un) + ']' > ']' ++ '[' > '`' c grave accent +dk(un) + '[' > '[' ++ 'p' > 'p' ++ 'o' > 'o' ++ 'i' > 'i' ++ 'u' > 'u' ++ 'y' > 'y' ++ 't' > 't' ++ 'r' > 'r' ++ 'e' > 'e' ++ 'w' > 'w' ++ 'q' > 'gb' +dk(un) + 'q' > 'q' +'gb' + [K_BKSP] > nul + ++ "'" > "'" ++ ';' > ';' ++ 'l' > 'l' ++ 'k' > 'k' ++ 'j' > 'j' ++ 'h' > 'h' ++ 'g' > 'g' ++ 'f' > 'f' ++ 'd' > 'd' ++ 's' > 's' ++ 'a' > 'a' + ++ '/' > '/' ++ '.' > '.' ++ ',' > ',' ++ 'm' > 'm' ++ 'n' > 'n' ++ 'b' > 'b' +if(style='dot') + 'v' > U+1EB9 +if(style='bar') + 'v' > U+0065 U+0329 +if(style='dot') dk(un) + 'v' > 'v' +if(style='bar') dk(un) + 'v' > 'v' ++ 'c' > 'c' +if(style='dot') + 'x' > U+1ECD +if(style='bar') + 'x' > U+006F U+0329 +if(style='dot') dk(un) + 'x' > 'x' +if(style='bar') dk(un) + 'x' > 'x' +if(style='dot') + 'z' > U+1E63 +if(style='bar') + 'z' > U+0073 U+0329 +if(style='dot') dk(un) + 'z' > 'z' +if(style='bar') dk(un) + 'z' > 'z' + +c Shifted QWERTY US ++ '+' > '+' ++ '_' > '_' ++ ')' > ')' ++ '(' > '(' ++ '*' > '*' ++ '&' > '&' ++ '^' > U+20A6 +dk(un) + '^' > '^' ++ '%' > '%' ++ '$' > '$' ++ '#' > '#' ++ '@' > '@' ++ '!' > '!' ++ '~' > '~' + ++ '|' > U+02C9 c macron accent +dk(un) + '|' > '|' ++ '}' > U+02C7 c caron accent +dk(un) + '}' > '}' ++ '{' > U+02C6 c circumflex accent +dk(un) + '{' > '{' ++ 'P' > 'P' ++ 'O' > 'O' ++ 'I' > 'I' ++ 'U' > 'U' ++ 'Y' > 'Y' ++ 'T' > 'T' ++ 'R' > 'R' ++ 'E' > 'E' ++ 'W' > 'W' ++ 'Q' > 'GB' +dk(un) + 'Q' > 'Q' +'GB' + [K_BKSP] > nul + ++ '"' > '"' ++ ':' > ':' ++ 'L' > 'L' ++ 'K' > 'K' ++ 'J' > 'J' ++ 'H' > 'H' ++ 'G' > 'G' ++ 'F' > 'F' ++ 'D' > 'D' ++ 'S' > 'S' ++ 'A' > 'A' + ++ '?' > '?' ++ '>' > '>' ++ '<' > '<' ++ 'M' > 'M' ++ 'N' > 'N' ++ 'B' > 'B' +if(style='dot') + 'V' > U+1EB8 +if(style='bar') + 'V' > U+0045 U+0329 +if(style='dot') dk(un) + 'V' > 'V' +if(style='bar') dk(un) + 'V' > 'V ++ 'C' > 'C' +if(style='dot') + 'X' > U+1ECC +if(style='bar') + 'X' > U+004F U+0329 +if(style='dot') dk(un) + 'X' > 'X' +if(style='bar') dk(un) + 'X' > 'X +if(style='dot') + 'Z' > U+1E62 +if(style='bar') + 'Z' > U+0053 U+0329 +if(style='dot') dk(un) + 'Z' > 'Z' +if(style='bar') dk(un) + 'Z' > 'Z' + +c Additional: QWERTY UK ++ '' > '' ++ '' > '' + +c =========== +c ==Accents== +c =========== +c Backspace +any(bar) U+0329 + [K_BKSP] > nul +any(v.bar) U+0329 any(ac.all) + [K_BKSP] > nul +any(dot+nsl) any(ac.all) + [K_BKSP] > nul + +c General +any(v.bar) U+0329 + any(key.all) > index(v.bar, 1) U+0329 index(ac.all, 3) +any(dot+nsl) + any(key.all) > index(dot+nsl, 1) index(ac.all, 2) + +c Grave +any(not.grv) + any(key.grv) > index(grv.all, 1) +any(v.bar) U+0329 any(not.ac.grv) + any(key.grv) > index(v.bar, 1) U+0329 index(ac.grv.all, 3) +any(dot+nsl) any(not.ac.grv) + any(key.grv) > index(dot+nsl, 1) index(ac.grv.all, 2) + +c Acute +any(not.act) + any(key.act) > index(act.all, 1) +any(v.bar) U+0329 any(not.ac.act) + any(key.act) > index(v.bar, 1) U+0329 index(ac.act.all, 3) +any(dot+nsl) any(not.ac.act) + any(key.act) > index(dot+nsl, 1) index(ac.act.all, 2) + +c Circumflex +any(not.crc) + any(key.crc) > index(crc.all, 1) +any(v.bar) U+0329 any(not.ac.crc) + any(key.crc) > index(v.bar, 1) U+0329 index(ac.crc.all, 3) +any(dot+nsl) any(not.ac.crc) + any(key.crc) > index(dot+nsl, 1) index(ac.crc.all, 2) + +c Caron +any(not.crn) + any(key.crn) > index(crn.all, 1) +any(v.bar) U+0329 any(not.ac.crn) + any(key.crn) > index(v.bar, 1) U+0329 index(ac.crn.all, 3) +any(dot+nsl) any(not.ac.crn) + any(key.crn) > index(dot+nsl, 1) index(ac.crn.all, 2) + +c Macron +any(not.mac) + any(key.mac) > index(mac.all, 1) +any(v.bar) U+0329 any(not.ac.mac) + any(key.mac) > index(v.bar, 1) U+0329 index(ac.mac.all, 3) +any(dot+nsl) any(not.ac.mac) + any(key.mac) > index(dot+nsl, 1) index(ac.mac.all, 2) + +c EOF diff --git a/common/test/keyboards/invalid/source/CERR_40133_balochi_phonetic_WrongErrNrInName.kmn b/common/test/keyboards/invalid/source/CERR_40133_balochi_phonetic_WrongErrNrInName.kmn new file mode 100644 index 0000000000..ccd8443790 --- /dev/null +++ b/common/test/keyboards/invalid/source/CERR_40133_balochi_phonetic_WrongErrNrInName.kmn @@ -0,0 +1,136 @@ +c ***** This test will produce 2 Errors: *************************** +c ***** 1) it will be marked as FAIL when run in kmcompxtest ******* +c ***** as a non-existing ErrorNr (0x00040133) is specified ***** +c ***** 2) CERR_InvalidStoreLine 0x00004013 will be produced ******* +c ****************************************************************** + +c ***** CERR_InvalidStoreLine 0x00004013 *************************** +store(&VERSION '10.0' +c ****************************************************************** +store(&NAME) 'Balochi Phonetic' +store(&TARGETS) 'any' +store(&KMW_RTL) '1' +store(&LAYOUTFILE) 'balochi_phonetic.keyman-touch-layout' +store(&KEYBOARDVERSION) '1.4.2' +store(©RIGHT) '© 2017-2021 SIL International' +store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).' +store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.' +store(&VISUALKEYBOARD) 'balochi_phonetic.kvks' +store(&BITMAP) 'CERR__balochi_phonetic.ico' + +begin Unicode > use(main) + +group(main) using keys ++ [CTRL B08] > '‎' ++ [CTRL B09] > '‏' ++ [CTRL B10] > '–' ++ [SHIFT CTRL E11] > '“' ++ [SHIFT CTRL E12] > '”' ++ [CTRL E11] > '‘' ++ [CTRL E12] > '’' ++ [CTRL K_K] > 'ء' ++ [CTRL K_D] > 'ذ' ++ [K_EQUAL] > '=' ++ [SHIFT K_8] > '*' ++ [SHIFT K_7] > '&' ++ [SHIFT K_5] > '%' ++ [SHIFT K_4] > '$' ++ [SHIFT K_3] > '#' ++ [SHIFT K_2] > '@' ++ [SHIFT K_1] > '!' ++ [SHIFT K_N] > 'ں' ++ [K_BKSLASH] > '۔' ++ [K_LBRKT] > ']' ++ [K_RBRKT] > '[' ++ [K_F] > 'َ' ++ [K_V] > 'ِ' ++ [K_X] > 'ش' ++ [SHIFT K_H] > 'ح' ++ [SHIFT K_G] > 'ص' ++ [SHIFT K_Y] > 'ي' ++ [CTRL K_0] > '۰' ++ [CTRL K_9] > '۹' ++ [CTRL K_8] > '۸' ++ [CTRL K_7] > '۷' ++ [CTRL K_6] > '۶' ++ [CTRL K_5] > '۵' ++ [CTRL K_4] > '۴' ++ [CTRL K_3] > '۳' ++ [CTRL K_2] > '۲' ++ [CTRL K_1] > '۱' ++ [K_SLASH] > '/' ++ [K_HYPHEN] > '-' ++ [SHIFT K_COLON] > ':' ++ [SHIFT K_QUOTE] > '"' ++ [K_QUOTE] > U+0027 ++ [K_O] > 'ُ' ++ [SHIFT K_O] > 'ْ' ++ [K_BKQUOTE] > 'ء' ++ [SHIFT K_W] > 'أ' ++ [SHIFT K_P] > 'ّ' ++ [SHIFT K_BKQUOTE] > 'ٔ' ++ [SHIFT K_J] > 'ض' ++ [SHIFT K_9] > ')' ++ [SHIFT K_RBRKT] > '{' ++ [SHIFT K_LBRKT] > '}' ++ [SHIFT K_0] > '(' ++ [SHIFT K_SLASH] > '؟' ++ [SHIFT K_K] > 'ع' ++ [SHIFT K_EQUAL] > '«' ++ [SHIFT K_HYPHEN] > '»' ++ [SHIFT K_I] > 'ً' + ++ [SHIFT K_PERIOD] > '‹' ++ [SHIFT K_COMMA] > '›' ++ [SHIFT K_L] > 'ـ' ++ [SHIFT K_U] > 'ۀ' ++ [SHIFT K_B] > 'ة' ++ [SHIFT K_M] > 'غ' ++ [SHIFT K_F] > 'ف' ++ [SHIFT K_E] > 'ۓ' ++ [SHIFT K_Q] > 'ق' ++ [K_0] > '0' ++ [K_9] > '9' ++ [K_8] > '8' ++ [K_7] > '7' ++ [K_6] > '6' ++ [K_5] > '5' ++ [K_4] > '4' ++ [K_3] > '3' ++ [K_2] > '2' ++ [K_1] > '1' ++ [K_I] > 'ێ' ++ [SHIFT K_D] > 'ڈ' ++ [K_G] > 'گ' ++ [K_U] > 'ۆ' ++ [SHIFT K_R] > 'ڑ' ++ [SHIFT K_6] > '‌' ++ [SHIFT K_T] > 'ٹ' ++ [SHIFT K_V] > 'ظ' ++ [SHIFT K_C] > 'ط' ++ [SHIFT K_X] > 'خ' ++ [SHIFT K_Z] > 'ژ' ++ [SHIFT K_S] > 'ث' ++ [SHIFT K_A] > 'آ' ++ [K_PERIOD] > '.' ++ [K_COMMA] > '،' ++ [K_M] > 'م' ++ [K_N] > 'ن' ++ [K_B] > 'ب' ++ [K_C] > 'چ' ++ [K_Z] > 'ز' ++ [K_P] > 'پ' ++ [K_Y] > 'ی' ++ [K_T] > 'ت' ++ [K_R] > 'ر' ++ [K_E] > 'ے' ++ [K_W] > 'و' ++ [K_Q] > 'ئ' ++ [K_COLON] > '؛' ++ [K_L] > 'ل' ++ [K_K] > 'ک' ++ [K_J] > 'ج' ++ [K_H] > 'ه' ++ [K_D] > 'د' ++ [K_S] > 'س' ++ [K_A] > 'ا' \ No newline at end of file diff --git a/common/test/keyboards/invalid/source/CERR_4017_balochi_phonetic.kmn b/common/test/keyboards/invalid/source/CERR_4017_balochi_phonetic.kmn index 888df78045..ddc33aeb05 100644 --- a/common/test/keyboards/invalid/source/CERR_4017_balochi_phonetic.kmn +++ b/common/test/keyboards/invalid/source/CERR_4017_balochi_phonetic.kmn @@ -8,7 +8,7 @@ store(©RIGHT) '© 2017-2021 SIL International' store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).' store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.' store(&VISUALKEYBOARD) 'balochi_phonetic.kvks' -store(&BITMAP) 'CERR__balochi_phonetic.ico' +store(&BITMAP) 'CERR__balochi_phonetic.bmp' begin Unicode > use(main) diff --git a/common/test/keyboards/invalid/source/CERR_402D_sil_yoruba8_WrongCopyrightChar_and_NoErrorThrownButErrorSpecified.kmn b/common/test/keyboards/invalid/source/CERR_402D_sil_yoruba8_WrongCopyrightChar_and_NoErrorThrownButErrorSpecified.kmn new file mode 100644 index 0000000000..be87b95678 --- /dev/null +++ b/common/test/keyboards/invalid/source/CERR_402D_sil_yoruba8_WrongCopyrightChar_and_NoErrorThrownButErrorSpecified.kmn @@ -0,0 +1,271 @@ +c ***** This test will produce 2 Errors: *************************** +c ***** 1) it will be marked as FAIL when run in kmcompxtest ******* +c ***** as the specified ErrorNr (0x0000402D) is not thrown ***** +c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced ******* +c ****************************************************************** + +store(&VERSION) '10.0' +c ***** CERR_InvalidCharacter 0x00004034 *************************** +store(&NAME) 'Yorb 8' +store(&MESSAGE) 'A simple Unicode keyboard for Yorb, with the option to use either the modern dot or the traditional bar under the letters e, o, and s.' +store(©RIGHT) ' 2012-2020 SIL International' +c ****************************************************************** +store(&mnemoniclayout) '1' +0024 +c store(&WINDOWSLANGUAGES) 'x046A' +c store(&LANGUAGE) 'x046A' +c store(ÐNOLOGUECODE) 'yor' + +store(&BITMAP) 'sil_yoruba8.ico' +store(&VISUALKEYBOARD) 'sil_yoruba8.kvks' +store(&TARGETS) 'desktop' +store(&KEYBOARDVERSION) '1.1' + +begin Unicode > use(main) + +group(main) using keys +c =========== +c ==Options== +c =========== +store(style) 'dot' +if(style='dot') + [CTRL '.'] > set(style='bar') +if(style='bar') + [CTRL '.'] > set(style='dot') + +c ========== +c ==Stores== +c ========== +c Letters +store(base) 'a' 'e' 'i' 'o' 'u' 'A' 'E' 'I' 'O' 'U' +store(grv) U+00E0 U+00E8 U+00EC U+00F2 U+00F9 U+00C0 U+00C8 U+00CC U+00D2 U+00D9 +store(act) U+00E1 U+00E9 U+00ED U+00F3 U+00FA U+00C1 U+00C9 U+00CD U+00D3 U+00DA +store(crc) U+00E2 U+00EA U+00EE U+00F4 U+00FB U+00C2 U+00CA U+00CE U+00D4 U+00DB +store(crn) U+01CE U+011B U+01D0 U+01D2 U+01D4 U+01CD U+011A U+01CF U+01D1 U+01D3 +store(mac) U+0101 U+0113 U+012B U+014D U+016B U+0100 U+0112 U+012A U+014C U+016A + +store(grv.all) outs(base) outs(grv) outs(grv) outs(grv) outs(grv) outs(grv) +store(act.all) outs(base) outs(act) outs(act) outs(act) outs(act) outs(act) +store(crc.all) outs(base) outs(crc) outs(crc) outs(crc) outs(crc) outs(crc) +store(crn.all) outs(base) outs(crn) outs(crn) outs(crn) outs(crn) outs(crn) +store(mac.all) outs(base) outs(mac) outs(mac) outs(mac) outs(mac) outs(mac) + +store(not.grv) outs(grv) outs(base) outs(act) outs(crc) outs(crn) outs(mac) +store(not.act) outs(act) outs(base) outs(grv) outs(crc) outs(crn) outs(mac) +store(not.crc) outs(crc) outs(base) outs(grv) outs(act) outs(crn) outs(mac) +store(not.crn) outs(crn) outs(base) outs(grv) outs(act) outs(crc) outs(mac) +store(not.mac) outs(mac) outs(base) outs(grv) outs(act) outs(crc) outs(crn) + +store(bar) 'e' 'o' 's' 'E' 'O' 'S' +store(v.bar) 'e' 'o' 'E' 'O' + +store(dot) U+1EB9 U+1ECD U+1EB8 U+1ECC +store(nsl) 'm' 'n' 'M' 'N' +store(dot+nsl) outs(dot) outs(nsl) + +c Accents +store(ac.grv) U+0300 +store(ac.act) U+0301 +store(ac.crc) U+0302 +store(ac.crn) U+030C +store(ac.mac) U+0304 + +store(ac.all) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac) + +store(ac.grv.all) nul outs(ac.grv) outs(ac.grv) outs(ac.grv) outs(ac.grv) +store(ac.act.all) nul outs(ac.act) outs(ac.act) outs(ac.act) outs(ac.act) +store(ac.crc.all) nul outs(ac.crc) outs(ac.crc) outs(ac.crc) outs(ac.crc) +store(ac.crn.all) nul outs(ac.crn) outs(ac.crn) outs(ac.crn) outs(ac.crn) +store(ac.mac.all) nul outs(ac.mac) outs(ac.mac) outs(ac.mac) outs(ac.mac) + +store(not.ac.grv) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac) +store(not.ac.act) outs(ac.act) outs(ac.grv) outs(ac.crc) outs(ac.crn) outs(ac.mac) +store(not.ac.crc) outs(ac.crc) outs(ac.grv) outs(ac.act) outs(ac.crn) outs(ac.mac) +store(not.ac.crn) outs(ac.crn) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.mac) +store(not.ac.mac) outs(ac.mac) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) + +c Keys +store(key.grv) '[' +store(key.act) ']' +store(key.crc) '{' +store(key.crn) '}' +store(key.mac) '|' + +store(key.all) outs(key.grv) outs(key.act) outs(key.crc) outs(key.crn) outs(key.mac) + +c ================ +c ==Basic Output== +c ================ +c Unshifted QWERTY US ++ '=' > '=' ++ '-' > '-' ++ '0' > '0' ++ '9' > '9' ++ '8' > '8' ++ '7' > '7' ++ '6' > '6' ++ '5' > '5' ++ '4' > '4' ++ '3' > '3' ++ '2' > '2' ++ '1' > '1' ++ '`' > dk(un) c types underlying character +dk(un) + '`' > '`' + ++ '\' > '\' ++ ']' > '' c acute accent +dk(un) + ']' > ']' ++ '[' > '`' c grave accent +dk(un) + '[' > '[' ++ 'p' > 'p' ++ 'o' > 'o' ++ 'i' > 'i' ++ 'u' > 'u' ++ 'y' > 'y' ++ 't' > 't' ++ 'r' > 'r' ++ 'e' > 'e' ++ 'w' > 'w' ++ 'q' > 'gb' +dk(un) + 'q' > 'q' +'gb' + [K_BKSP] > nul + ++ "'" > "'" ++ ';' > ';' ++ 'l' > 'l' ++ 'k' > 'k' ++ 'j' > 'j' ++ 'h' > 'h' ++ 'g' > 'g' ++ 'f' > 'f' ++ 'd' > 'd' ++ 's' > 's' ++ 'a' > 'a' + ++ '/' > '/' ++ '.' > '.' ++ ',' > ',' ++ 'm' > 'm' ++ 'n' > 'n' ++ 'b' > 'b' +if(style='dot') + 'v' > U+1EB9 +if(style='bar') + 'v' > U+0065 U+0329 +if(style='dot') dk(un) + 'v' > 'v' +if(style='bar') dk(un) + 'v' > 'v' ++ 'c' > 'c' +if(style='dot') + 'x' > U+1ECD +if(style='bar') + 'x' > U+006F U+0329 +if(style='dot') dk(un) + 'x' > 'x' +if(style='bar') dk(un) + 'x' > 'x' +if(style='dot') + 'z' > U+1E63 +if(style='bar') + 'z' > U+0073 U+0329 +if(style='dot') dk(un) + 'z' > 'z' +if(style='bar') dk(un) + 'z' > 'z' + +c Shifted QWERTY US ++ '+' > '+' ++ '_' > '_' ++ ')' > ')' ++ '(' > '(' ++ '*' > '*' ++ '&' > '&' ++ '^' > U+20A6 +dk(un) + '^' > '^' ++ '%' > '%' ++ '$' > '$' ++ '#' > '#' ++ '@' > '@' ++ '!' > '!' ++ '~' > '~' + ++ '|' > U+02C9 c macron accent +dk(un) + '|' > '|' ++ '}' > U+02C7 c caron accent +dk(un) + '}' > '}' ++ '{' > U+02C6 c circumflex accent +dk(un) + '{' > '{' ++ 'P' > 'P' ++ 'O' > 'O' ++ 'I' > 'I' ++ 'U' > 'U' ++ 'Y' > 'Y' ++ 'T' > 'T' ++ 'R' > 'R' ++ 'E' > 'E' ++ 'W' > 'W' ++ 'Q' > 'GB' +dk(un) + 'Q' > 'Q' +'GB' + [K_BKSP] > nul + ++ '"' > '"' ++ ':' > ':' ++ 'L' > 'L' ++ 'K' > 'K' ++ 'J' > 'J' ++ 'H' > 'H' ++ 'G' > 'G' ++ 'F' > 'F' ++ 'D' > 'D' ++ 'S' > 'S' ++ 'A' > 'A' + ++ '?' > '?' ++ '>' > '>' ++ '<' > '<' ++ 'M' > 'M' ++ 'N' > 'N' ++ 'B' > 'B' +if(style='dot') + 'V' > U+1EB8 +if(style='bar') + 'V' > U+0045 U+0329 +if(style='dot') dk(un) + 'V' > 'V' +if(style='bar') dk(un) + 'V' > 'V ++ 'C' > 'C' +if(style='dot') + 'X' > U+1ECC +if(style='bar') + 'X' > U+004F U+0329 +if(style='dot') dk(un) + 'X' > 'X' +if(style='bar') dk(un) + 'X' > 'X +if(style='dot') + 'Z' > U+1E62 +if(style='bar') + 'Z' > U+0053 U+0329 +if(style='dot') dk(un) + 'Z' > 'Z' +if(style='bar') dk(un) + 'Z' > 'Z' + +c Additional: QWERTY UK ++ '' > '' ++ '' > '' + +c =========== +c ==Accents== +c =========== +c Backspace +any(bar) U+0329 + [K_BKSP] > nul +any(v.bar) U+0329 any(ac.all) + [K_BKSP] > nul +any(dot+nsl) any(ac.all) + [K_BKSP] > nul + +c General +any(v.bar) U+0329 + any(key.all) > index(v.bar, 1) U+0329 index(ac.all, 3) +any(dot+nsl) + any(key.all) > index(dot+nsl, 1) index(ac.all, 2) + +c Grave +any(not.grv) + any(key.grv) > index(grv.all, 1) +any(v.bar) U+0329 any(not.ac.grv) + any(key.grv) > index(v.bar, 1) U+0329 index(ac.grv.all, 3) +any(dot+nsl) any(not.ac.grv) + any(key.grv) > index(dot+nsl, 1) index(ac.grv.all, 2) + +c Acute +any(not.act) + any(key.act) > index(act.all, 1) +any(v.bar) U+0329 any(not.ac.act) + any(key.act) > index(v.bar, 1) U+0329 index(ac.act.all, 3) +any(dot+nsl) any(not.ac.act) + any(key.act) > index(dot+nsl, 1) index(ac.act.all, 2) + +c Circumflex +any(not.crc) + any(key.crc) > index(crc.all, 1) +any(v.bar) U+0329 any(not.ac.crc) + any(key.crc) > index(v.bar, 1) U+0329 index(ac.crc.all, 3) +any(dot+nsl) any(not.ac.crc) + any(key.crc) > index(dot+nsl, 1) index(ac.crc.all, 2) + +c Caron +any(not.crn) + any(key.crn) > index(crn.all, 1) +any(v.bar) U+0329 any(not.ac.crn) + any(key.crn) > index(v.bar, 1) U+0329 index(ac.crn.all, 3) +any(dot+nsl) any(not.ac.crn) + any(key.crn) > index(dot+nsl, 1) index(ac.crn.all, 2) + +c Macron +any(not.mac) + any(key.mac) > index(mac.all, 1) +any(v.bar) U+0329 any(not.ac.mac) + any(key.mac) > index(v.bar, 1) U+0329 index(ac.mac.all, 3) +any(dot+nsl) any(not.ac.mac) + any(key.mac) > index(dot+nsl, 1) index(ac.mac.all, 2) + +c EOF diff --git a/common/test/keyboards/invalid/source/CERR_4034_balochi_phonetic.kmn b/common/test/keyboards/invalid/source/CERR_4034_balochi_phonetic.kmn new file mode 100644 index 0000000000..c5c8306d37 --- /dev/null +++ b/common/test/keyboards/invalid/source/CERR_4034_balochi_phonetic.kmn @@ -0,0 +1,130 @@ +store(&VERSION) '10.0' +store(&NAME) 'Balochi Phonetic' +store(&TARGETS) 'any' +store(&KMW_RTL) '1' +store(&LAYOUTFILE) 'balochi_phonetic.keyman-touch-layout' +store(&KEYBOARDVERSION) '1.4.2' +c ***** CERR_InvalidCharacter 0x00004034 *************************** +store(©RIGHT) ' 2012 U+1234 -2020 SIL International' +c ****************************************************************** +store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).' +store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.' +store(&VISUALKEYBOARD) 'balochi_phonetic.kvks' +store(&BITMAP) 'CERR__balochi_phonetic.ico' + +begin Unicode > use(main) + +group(main) using keys ++ [CTRL B08] > '‎' ++ [CTRL B09] > '‏' ++ [CTRL B10] > '–' ++ [SHIFT CTRL E11] > '“' ++ [SHIFT CTRL E12] > '”' ++ [CTRL E11] > '‘' ++ [CTRL E12] > '’' ++ [CTRL K_K] > 'ء' ++ [CTRL K_D] > 'ذ' ++ [K_EQUAL] > '=' ++ [SHIFT K_8] > '*' ++ [SHIFT K_7] > '&' ++ [SHIFT K_5] > '%' ++ [SHIFT K_4] > '$' ++ [SHIFT K_3] > '#' ++ [SHIFT K_2] > '@' ++ [SHIFT K_1] > '!' ++ [SHIFT K_N] > 'ں' ++ [K_BKSLASH] > '۔' ++ [K_LBRKT] > ']' ++ [K_RBRKT] > '[' ++ [K_F] > 'َ' ++ [K_V] > 'ِ' ++ [K_X] > 'ش' ++ [SHIFT K_H] > 'ح' ++ [SHIFT K_G] > 'ص' ++ [SHIFT K_Y] > 'ي' ++ [CTRL K_0] > '۰' ++ [CTRL K_9] > '۹' ++ [CTRL K_8] > '۸' ++ [CTRL K_7] > '۷' ++ [CTRL K_6] > '۶' ++ [CTRL K_5] > '۵' ++ [CTRL K_4] > '۴' ++ [CTRL K_3] > '۳' ++ [CTRL K_2] > '۲' ++ [CTRL K_1] > '۱' ++ [K_SLASH] > '/' ++ [K_HYPHEN] > '-' ++ [SHIFT K_COLON] > ':' ++ [SHIFT K_QUOTE] > '"' ++ [K_QUOTE] > U+0027 ++ [K_O] > 'ُ' ++ [SHIFT K_O] > 'ْ' ++ [K_BKQUOTE] > 'ء' ++ [SHIFT K_W] > 'أ' ++ [SHIFT K_P] > 'ّ' ++ [SHIFT K_BKQUOTE] > 'ٔ' ++ [SHIFT K_J] > 'ض' ++ [SHIFT K_9] > ')' ++ [SHIFT K_RBRKT] > '{' ++ [SHIFT K_LBRKT] > '}' ++ [SHIFT K_0] > '(' ++ [SHIFT K_SLASH] > '؟' ++ [SHIFT K_K] > 'ع' ++ [SHIFT K_EQUAL] > '«' ++ [SHIFT K_HYPHEN] > '»' ++ [SHIFT K_I] > 'ً' + ++ [SHIFT K_PERIOD] > '‹' ++ [SHIFT K_COMMA] > '›' ++ [SHIFT K_L] > 'ـ' ++ [SHIFT K_U] > 'ۀ' ++ [SHIFT K_B] > 'ة' ++ [SHIFT K_M] > 'غ' ++ [SHIFT K_F] > 'ف' ++ [SHIFT K_E] > 'ۓ' ++ [SHIFT K_Q] > 'ق' ++ [K_0] > '0' ++ [K_9] > '9' ++ [K_8] > '8' ++ [K_7] > '7' ++ [K_6] > '6' ++ [K_5] > '5' ++ [K_4] > '4' ++ [K_3] > '3' ++ [K_2] > '2' ++ [K_1] > '1' ++ [K_I] > 'ێ' ++ [SHIFT K_D] > 'ڈ' ++ [K_G] > 'گ' ++ [K_U] > 'ۆ' ++ [SHIFT K_R] > 'ڑ' ++ [SHIFT K_6] > '‌' ++ [SHIFT K_T] > 'ٹ' ++ [SHIFT K_V] > 'ظ' ++ [SHIFT K_C] > 'ط' ++ [SHIFT K_X] > 'خ' ++ [SHIFT K_Z] > 'ژ' ++ [SHIFT K_S] > 'ث' ++ [SHIFT K_A] > 'آ' ++ [K_PERIOD] > '.' ++ [K_COMMA] > '،' ++ [K_M] > 'م' ++ [K_N] > 'ن' ++ [K_B] > 'ب' ++ [K_C] > 'چ' ++ [K_Z] > 'ز' ++ [K_P] > 'پ' ++ [K_Y] > 'ی' ++ [K_T] > 'ت' ++ [K_R] > 'ر' ++ [K_E] > 'ے' ++ [K_W] > 'و' ++ [K_Q] > 'ئ' ++ [K_COLON] > '؛' ++ [K_L] > 'ل' ++ [K_K] > 'ک' ++ [K_J] > 'ج' ++ [K_H] > 'ه' ++ [K_D] > 'د' ++ [K_S] > 'س' ++ [K_A] > 'ا' \ No newline at end of file diff --git a/common/test/keyboards/invalid/source/CERR_4040_balochi_phonetic_WithNoErrorThrownButErrorSpecified.kmn b/common/test/keyboards/invalid/source/CERR_4040_balochi_phonetic_WithNoErrorThrownButErrorSpecified.kmn new file mode 100644 index 0000000000..ffc982a3a2 --- /dev/null +++ b/common/test/keyboards/invalid/source/CERR_4040_balochi_phonetic_WithNoErrorThrownButErrorSpecified.kmn @@ -0,0 +1,133 @@ +c ***** This test will produce 1 Error: **************************** +c ***** It will be marked as FAIL when run in kmcompxtest ********** +c ***** as a non-existing ErrorNr (0x00001234) is specified ***** +c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced ******* +c ****************************************************************** +store(&VERSION) '10.0' +store(&NAME) 'Balochi Phonetic' +store(&TARGETS) 'any' +store(&KMW_RTL) '1' +store(&LAYOUTFILE) 'balochi_phonetic.keyman-touch-layout' +store(&KEYBOARDVERSION) '1.5' +store(©RIGHT) '© SIL International' +store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).' +store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.' +store(&VISUALKEYBOARD) 'balochi_phonetic.kvks' +store(&BITMAP) 'balochi__phonetic.ico' + +begin Unicode > use(main) + +group(main) using keys ++ [CTRL B08] > '‎' ++ [CTRL B09] > '‏' ++ [CTRL B10] > '–' ++ [SHIFT CTRL E11] > '“' ++ [SHIFT CTRL E12] > '”' ++ [CTRL E11] > '‘' ++ [CTRL E12] > '’' ++ [CTRL K_K] > 'ء' ++ [CTRL K_D] > 'ذ' ++ [K_EQUAL] > '=' ++ [SHIFT K_8] > '*' ++ [SHIFT K_7] > '&' ++ [SHIFT K_5] > '%' ++ [SHIFT K_4] > '$' ++ [SHIFT K_3] > '#' ++ [SHIFT K_2] > '@' ++ [SHIFT K_1] > '!' ++ [SHIFT K_N] > 'ں' ++ [K_BKSLASH] > '۔' ++ [K_LBRKT] > ']' ++ [K_RBRKT] > '[' ++ [K_F] > 'َ' ++ [K_V] > 'ِ' ++ [K_X] > 'ش' ++ [SHIFT K_H] > 'ح' ++ [SHIFT K_G] > 'ص' ++ [SHIFT K_Y] > 'ي' ++ [CTRL K_0] > '۰' ++ [CTRL K_9] > '۹' ++ [CTRL K_8] > '۸' ++ [CTRL K_7] > '۷' ++ [CTRL K_6] > '۶' ++ [CTRL K_5] > '۵' ++ [CTRL K_4] > '۴' ++ [CTRL K_3] > '۳' ++ [CTRL K_2] > '۲' ++ [CTRL K_1] > '۱' ++ [K_SLASH] > '/' ++ [K_HYPHEN] > '-' ++ [SHIFT K_COLON] > ':' ++ [SHIFT K_QUOTE] > '"' ++ [K_QUOTE] > U+0027 ++ [K_O] > 'ُ' ++ [SHIFT K_O] > 'ْ' ++ [K_BKQUOTE] > 'ء' ++ [SHIFT K_W] > 'أ' ++ [SHIFT K_P] > 'ّ' ++ [SHIFT K_BKQUOTE] > 'ٔ' ++ [SHIFT K_J] > 'ض' ++ [SHIFT K_9] > ')' ++ [SHIFT K_RBRKT] > '{' ++ [SHIFT K_LBRKT] > '}' ++ [SHIFT K_0] > '(' ++ [SHIFT K_SLASH] > '؟' ++ [SHIFT K_K] > 'ع' ++ [SHIFT K_EQUAL] > '«' ++ [SHIFT K_HYPHEN] > '»' ++ [SHIFT K_I] > 'ً' + ++ [SHIFT K_PERIOD] > '‹' ++ [SHIFT K_COMMA] > '›' ++ [SHIFT K_L] > 'ـ' ++ [SHIFT K_U] > 'ۀ' ++ [SHIFT K_B] > 'ة' ++ [SHIFT K_M] > 'غ' ++ [SHIFT K_F] > 'ف' ++ [SHIFT K_E] > 'ۓ' ++ [SHIFT K_Q] > 'ق' ++ [K_0] > '0' ++ [K_9] > '9' ++ [K_8] > '8' ++ [K_7] > '7' ++ [K_6] > '6' ++ [K_5] > '5' ++ [K_4] > '4' ++ [K_3] > '3' ++ [K_2] > '2' ++ [K_1] > '1' ++ [K_I] > 'ێ' ++ [SHIFT K_D] > 'ڈ' ++ [K_G] > 'گ' ++ [K_U] > 'ۆ' ++ [SHIFT K_R] > 'ڑ' ++ [SHIFT K_6] > '‌' ++ [SHIFT K_T] > 'ٹ' ++ [SHIFT K_V] > 'ظ' ++ [SHIFT K_C] > 'ط' ++ [SHIFT K_X] > 'خ' ++ [SHIFT K_Z] > 'ژ' ++ [SHIFT K_S] > 'ث' ++ [SHIFT K_A] > 'آ' ++ [K_PERIOD] > '.' ++ [K_COMMA] > '،' ++ [K_M] > 'م' ++ [K_N] > 'ن' ++ [K_B] > 'ب' ++ [K_C] > 'چ' ++ [K_Z] > 'ز' ++ [K_P] > 'پ' ++ [K_Y] > 'ی' ++ [K_T] > 'ت' ++ [K_R] > 'ر' ++ [K_E] > 'ے' ++ [K_W] > 'و' ++ [K_Q] > 'ئ' ++ [K_COLON] > '؛' ++ [K_L] > 'ل' ++ [K_K] > 'ک' ++ [K_J] > 'ج' ++ [K_H] > 'ه' ++ [K_D] > 'د' ++ [K_S] > 'س' ++ [K_A] > 'ا' diff --git a/common/test/keyboards/invalid/source/sil_yoruba8_WrongCopyrightChar_AndMissingErNrInName.kmn b/common/test/keyboards/invalid/source/sil_yoruba8_WrongCopyrightChar_AndMissingErNrInName.kmn new file mode 100644 index 0000000000..7ef467b31d --- /dev/null +++ b/common/test/keyboards/invalid/source/sil_yoruba8_WrongCopyrightChar_AndMissingErNrInName.kmn @@ -0,0 +1,272 @@ +c ***** This test will produce 2 Errors: *************************** +c ***** 1) it will be marked as FAIL when run in kmcompxtest ******* +c ***** as it does not specify an Error + Nr ( no CERR_xxxx) **** +c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced ******* +c ****************************************************************** + +store(&VERSION) '10.0' +c ***** CERR_InvalidCharacter 0x00004034 *************************** +store(&NAME) 'Yorb 8' +store(&MESSAGE) 'A simple Unicode keyboard for Yorb, with the option to use either the modern dot or the traditional bar under the letters e, o, and s.' +store(©RIGHT) ' 2012-2020 SIL International' +c ****************************************************************** + +store(&mnemoniclayout) '1' + +c store(&WINDOWSLANGUAGES) 'x046A' +c store(&LANGUAGE) 'x046A' +c store(ÐNOLOGUECODE) 'yor' + +store(&BITMAP) 'sil_yoruba8.ico' +store(&VISUALKEYBOARD) 'sil_yoruba8.kvks' +store(&TARGETS) 'desktop' +store(&KEYBOARDVERSION) '1.1' + +begin Unicode > use(main) + +group(main) using keys +c =========== +c ==Options== +c =========== +store(style) 'dot' +if(style='dot') + [CTRL '.'] > set(style='bar') +if(style='bar') + [CTRL '.'] > set(style='dot') + +c ========== +c ==Stores== +c ========== +c Letters +store(base) 'a' 'e' 'i' 'o' 'u' 'A' 'E' 'I' 'O' 'U' +store(grv) U+00E0 U+00E8 U+00EC U+00F2 U+00F9 U+00C0 U+00C8 U+00CC U+00D2 U+00D9 +store(act) U+00E1 U+00E9 U+00ED U+00F3 U+00FA U+00C1 U+00C9 U+00CD U+00D3 U+00DA +store(crc) U+00E2 U+00EA U+00EE U+00F4 U+00FB U+00C2 U+00CA U+00CE U+00D4 U+00DB +store(crn) U+01CE U+011B U+01D0 U+01D2 U+01D4 U+01CD U+011A U+01CF U+01D1 U+01D3 +store(mac) U+0101 U+0113 U+012B U+014D U+016B U+0100 U+0112 U+012A U+014C U+016A + +store(grv.all) outs(base) outs(grv) outs(grv) outs(grv) outs(grv) outs(grv) +store(act.all) outs(base) outs(act) outs(act) outs(act) outs(act) outs(act) +store(crc.all) outs(base) outs(crc) outs(crc) outs(crc) outs(crc) outs(crc) +store(crn.all) outs(base) outs(crn) outs(crn) outs(crn) outs(crn) outs(crn) +store(mac.all) outs(base) outs(mac) outs(mac) outs(mac) outs(mac) outs(mac) + +store(not.grv) outs(grv) outs(base) outs(act) outs(crc) outs(crn) outs(mac) +store(not.act) outs(act) outs(base) outs(grv) outs(crc) outs(crn) outs(mac) +store(not.crc) outs(crc) outs(base) outs(grv) outs(act) outs(crn) outs(mac) +store(not.crn) outs(crn) outs(base) outs(grv) outs(act) outs(crc) outs(mac) +store(not.mac) outs(mac) outs(base) outs(grv) outs(act) outs(crc) outs(crn) + +store(bar) 'e' 'o' 's' 'E' 'O' 'S' +store(v.bar) 'e' 'o' 'E' 'O' + +store(dot) U+1EB9 U+1ECD U+1EB8 U+1ECC +store(nsl) 'm' 'n' 'M' 'N' +store(dot+nsl) outs(dot) outs(nsl) + +c Accents +store(ac.grv) U+0300 +store(ac.act) U+0301 +store(ac.crc) U+0302 +store(ac.crn) U+030C +store(ac.mac) U+0304 + +store(ac.all) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac) + +store(ac.grv.all) nul outs(ac.grv) outs(ac.grv) outs(ac.grv) outs(ac.grv) +store(ac.act.all) nul outs(ac.act) outs(ac.act) outs(ac.act) outs(ac.act) +store(ac.crc.all) nul outs(ac.crc) outs(ac.crc) outs(ac.crc) outs(ac.crc) +store(ac.crn.all) nul outs(ac.crn) outs(ac.crn) outs(ac.crn) outs(ac.crn) +store(ac.mac.all) nul outs(ac.mac) outs(ac.mac) outs(ac.mac) outs(ac.mac) + +store(not.ac.grv) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) outs(ac.mac) +store(not.ac.act) outs(ac.act) outs(ac.grv) outs(ac.crc) outs(ac.crn) outs(ac.mac) +store(not.ac.crc) outs(ac.crc) outs(ac.grv) outs(ac.act) outs(ac.crn) outs(ac.mac) +store(not.ac.crn) outs(ac.crn) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.mac) +store(not.ac.mac) outs(ac.mac) outs(ac.grv) outs(ac.act) outs(ac.crc) outs(ac.crn) + +c Keys +store(key.grv) '[' +store(key.act) ']' +store(key.crc) '{' +store(key.crn) '}' +store(key.mac) '|' + +store(key.all) outs(key.grv) outs(key.act) outs(key.crc) outs(key.crn) outs(key.mac) + +c ================ +c ==Basic Output== +c ================ +c Unshifted QWERTY US ++ '=' > '=' ++ '-' > '-' ++ '0' > '0' ++ '9' > '9' ++ '8' > '8' ++ '7' > '7' ++ '6' > '6' ++ '5' > '5' ++ '4' > '4' ++ '3' > '3' ++ '2' > '2' ++ '1' > '1' ++ '`' > dk(un) c types underlying character +dk(un) + '`' > '`' + ++ '\' > '\' ++ ']' > '' c acute accent +dk(un) + ']' > ']' ++ '[' > '`' c grave accent +dk(un) + '[' > '[' ++ 'p' > 'p' ++ 'o' > 'o' ++ 'i' > 'i' ++ 'u' > 'u' ++ 'y' > 'y' ++ 't' > 't' ++ 'r' > 'r' ++ 'e' > 'e' ++ 'w' > 'w' ++ 'q' > 'gb' +dk(un) + 'q' > 'q' +'gb' + [K_BKSP] > nul + ++ "'" > "'" ++ ';' > ';' ++ 'l' > 'l' ++ 'k' > 'k' ++ 'j' > 'j' ++ 'h' > 'h' ++ 'g' > 'g' ++ 'f' > 'f' ++ 'd' > 'd' ++ 's' > 's' ++ 'a' > 'a' + ++ '/' > '/' ++ '.' > '.' ++ ',' > ',' ++ 'm' > 'm' ++ 'n' > 'n' ++ 'b' > 'b' +if(style='dot') + 'v' > U+1EB9 +if(style='bar') + 'v' > U+0065 U+0329 +if(style='dot') dk(un) + 'v' > 'v' +if(style='bar') dk(un) + 'v' > 'v' ++ 'c' > 'c' +if(style='dot') + 'x' > U+1ECD +if(style='bar') + 'x' > U+006F U+0329 +if(style='dot') dk(un) + 'x' > 'x' +if(style='bar') dk(un) + 'x' > 'x' +if(style='dot') + 'z' > U+1E63 +if(style='bar') + 'z' > U+0073 U+0329 +if(style='dot') dk(un) + 'z' > 'z' +if(style='bar') dk(un) + 'z' > 'z' + +c Shifted QWERTY US ++ '+' > '+' ++ '_' > '_' ++ ')' > ')' ++ '(' > '(' ++ '*' > '*' ++ '&' > '&' ++ '^' > U+20A6 +dk(un) + '^' > '^' ++ '%' > '%' ++ '$' > '$' ++ '#' > '#' ++ '@' > '@' ++ '!' > '!' ++ '~' > '~' + ++ '|' > U+02C9 c macron accent +dk(un) + '|' > '|' ++ '}' > U+02C7 c caron accent +dk(un) + '}' > '}' ++ '{' > U+02C6 c circumflex accent +dk(un) + '{' > '{' ++ 'P' > 'P' ++ 'O' > 'O' ++ 'I' > 'I' ++ 'U' > 'U' ++ 'Y' > 'Y' ++ 'T' > 'T' ++ 'R' > 'R' ++ 'E' > 'E' ++ 'W' > 'W' ++ 'Q' > 'GB' +dk(un) + 'Q' > 'Q' +'GB' + [K_BKSP] > nul + ++ '"' > '"' ++ ':' > ':' ++ 'L' > 'L' ++ 'K' > 'K' ++ 'J' > 'J' ++ 'H' > 'H' ++ 'G' > 'G' ++ 'F' > 'F' ++ 'D' > 'D' ++ 'S' > 'S' ++ 'A' > 'A' + ++ '?' > '?' ++ '>' > '>' ++ '<' > '<' ++ 'M' > 'M' ++ 'N' > 'N' ++ 'B' > 'B' +if(style='dot') + 'V' > U+1EB8 +if(style='bar') + 'V' > U+0045 U+0329 +if(style='dot') dk(un) + 'V' > 'V' +if(style='bar') dk(un) + 'V' > 'V ++ 'C' > 'C' +if(style='dot') + 'X' > U+1ECC +if(style='bar') + 'X' > U+004F U+0329 +if(style='dot') dk(un) + 'X' > 'X' +if(style='bar') dk(un) + 'X' > 'X +if(style='dot') + 'Z' > U+1E62 +if(style='bar') + 'Z' > U+0053 U+0329 +if(style='dot') dk(un) + 'Z' > 'Z' +if(style='bar') dk(un) + 'Z' > 'Z' + +c Additional: QWERTY UK ++ '' > '' ++ '' > '' + +c =========== +c ==Accents== +c =========== +c Backspace +any(bar) U+0329 + [K_BKSP] > nul +any(v.bar) U+0329 any(ac.all) + [K_BKSP] > nul +any(dot+nsl) any(ac.all) + [K_BKSP] > nul + +c General +any(v.bar) U+0329 + any(key.all) > index(v.bar, 1) U+0329 index(ac.all, 3) +any(dot+nsl) + any(key.all) > index(dot+nsl, 1) index(ac.all, 2) + +c Grave +any(not.grv) + any(key.grv) > index(grv.all, 1) +any(v.bar) U+0329 any(not.ac.grv) + any(key.grv) > index(v.bar, 1) U+0329 index(ac.grv.all, 3) +any(dot+nsl) any(not.ac.grv) + any(key.grv) > index(dot+nsl, 1) index(ac.grv.all, 2) + +c Acute +any(not.act) + any(key.act) > index(act.all, 1) +any(v.bar) U+0329 any(not.ac.act) + any(key.act) > index(v.bar, 1) U+0329 index(ac.act.all, 3) +any(dot+nsl) any(not.ac.act) + any(key.act) > index(dot+nsl, 1) index(ac.act.all, 2) + +c Circumflex +any(not.crc) + any(key.crc) > index(crc.all, 1) +any(v.bar) U+0329 any(not.ac.crc) + any(key.crc) > index(v.bar, 1) U+0329 index(ac.crc.all, 3) +any(dot+nsl) any(not.ac.crc) + any(key.crc) > index(dot+nsl, 1) index(ac.crc.all, 2) + +c Caron +any(not.crn) + any(key.crn) > index(crn.all, 1) +any(v.bar) U+0329 any(not.ac.crn) + any(key.crn) > index(v.bar, 1) U+0329 index(ac.crn.all, 3) +any(dot+nsl) any(not.ac.crn) + any(key.crn) > index(dot+nsl, 1) index(ac.crn.all, 2) + +c Macron +any(not.mac) + any(key.mac) > index(mac.all, 1) +any(v.bar) U+0329 any(not.ac.mac) + any(key.mac) > index(v.bar, 1) U+0329 index(ac.mac.all, 3) +any(dot+nsl) any(not.ac.mac) + any(key.mac) > index(dot+nsl, 1) index(ac.mac.all, 2) + +c EOF diff --git a/common/test/keyboards/invalid/source/xCERR_4034_balochi_phonetic_WrongNamingConvention.kmn b/common/test/keyboards/invalid/source/xCERR_4034_balochi_phonetic_WrongNamingConvention.kmn new file mode 100644 index 0000000000..4be9fb5fb5 --- /dev/null +++ b/common/test/keyboards/invalid/source/xCERR_4034_balochi_phonetic_WrongNamingConvention.kmn @@ -0,0 +1,136 @@ +c ***** This test will produce 2 Errors: *************************** +c ***** 1) it will be marked as FAIL when run in kmcompxtest ******* +c ***** as the Name starts with xCERR instead of CERR *********** +c ***** 2) CERR_InvalidCharacter 0x00004034 will be produced ******* +c ****************************************************************** + +store(&VERSION) '10.0' +store(&NAME) 'Balochi Phonetic' +store(&TARGETS) 'any' +store(&KMW_RTL) '1' +store(&LAYOUTFILE) 'balochi_phonetic.keyman-touch-layout' +store(&KEYBOARDVERSION) '1.4.2' +c ***** CERR_InvalidCharacter 0x00004034 *************************** +store(©RIGHT) U+11FFFF +c ****************************************************************** +store(&MESSAGE) 'The Balochi Phonetic keyboard is distributed under The MIT License (MIT).' +store(&KMW_HELPTEXT) 'This is a phonetically organized Balochi keyboard.' +store(&VISUALKEYBOARD) 'balochi_phonetic.kvks' +store(&BITMAP) 'CERR__balochi_phonetic.ico' + +begin Unicode > use(main) + +group(main) using keys ++ [CTRL B08] > '‎' ++ [CTRL B09] > '‏' ++ [CTRL B10] > '–' ++ [SHIFT CTRL E11] > '“' ++ [SHIFT CTRL E12] > '”' ++ [CTRL E11] > '‘' ++ [CTRL E12] > '’' ++ [CTRL K_K] > 'ء' ++ [CTRL K_D] > 'ذ' ++ [K_EQUAL] > '=' ++ [SHIFT K_8] > '*' ++ [SHIFT K_7] > '&' ++ [SHIFT K_5] > '%' ++ [SHIFT K_4] > '$' ++ [SHIFT K_3] > '#' ++ [SHIFT K_2] > '@' ++ [SHIFT K_1] > '!' ++ [SHIFT K_N] > 'ں' ++ [K_BKSLASH] > '۔' ++ [K_LBRKT] > ']' ++ [K_RBRKT] > '[' ++ [K_F] > 'َ' ++ [K_V] > 'ِ' ++ [K_X] > 'ش' ++ [SHIFT K_H] > 'ح' ++ [SHIFT K_G] > 'ص' ++ [SHIFT K_Y] > 'ي' ++ [CTRL K_0] > '۰' ++ [CTRL K_9] > '۹' ++ [CTRL K_8] > '۸' ++ [CTRL K_7] > '۷' ++ [CTRL K_6] > '۶' ++ [CTRL K_5] > '۵' ++ [CTRL K_4] > '۴' ++ [CTRL K_3] > '۳' ++ [CTRL K_2] > '۲' ++ [CTRL K_1] > '۱' ++ [K_SLASH] > '/' ++ [K_HYPHEN] > '-' ++ [SHIFT K_COLON] > ':' ++ [SHIFT K_QUOTE] > '"' ++ [K_QUOTE] > U+0027 ++ [K_O] > 'ُ' ++ [SHIFT K_O] > 'ْ' ++ [K_BKQUOTE] > 'ء' ++ [SHIFT K_W] > 'أ' ++ [SHIFT K_P] > 'ّ' ++ [SHIFT K_BKQUOTE] > 'ٔ' ++ [SHIFT K_J] > 'ض' ++ [SHIFT K_9] > ')' ++ [SHIFT K_RBRKT] > '{' ++ [SHIFT K_LBRKT] > '}' ++ [SHIFT K_0] > '(' ++ [SHIFT K_SLASH] > '؟' ++ [SHIFT K_K] > 'ع' ++ [SHIFT K_EQUAL] > '«' ++ [SHIFT K_HYPHEN] > '»' ++ [SHIFT K_I] > 'ً' + ++ [SHIFT K_PERIOD] > '‹' ++ [SHIFT K_COMMA] > '›' ++ [SHIFT K_L] > 'ـ' ++ [SHIFT K_U] > 'ۀ' ++ [SHIFT K_B] > 'ة' ++ [SHIFT K_M] > 'غ' ++ [SHIFT K_F] > 'ف' ++ [SHIFT K_E] > 'ۓ' ++ [SHIFT K_Q] > 'ق' ++ [K_0] > '0' ++ [K_9] > '9' ++ [K_8] > '8' ++ [K_7] > '7' ++ [K_6] > '6' ++ [K_5] > '5' ++ [K_4] > '4' ++ [K_3] > '3' ++ [K_2] > '2' ++ [K_1] > '1' ++ [K_I] > 'ێ' ++ [SHIFT K_D] > 'ڈ' ++ [K_G] > 'گ' ++ [K_U] > 'ۆ' ++ [SHIFT K_R] > 'ڑ' ++ [SHIFT K_6] > '‌' ++ [SHIFT K_T] > 'ٹ' ++ [SHIFT K_V] > 'ظ' ++ [SHIFT K_C] > 'ط' ++ [SHIFT K_X] > 'خ' ++ [SHIFT K_Z] > 'ژ' ++ [SHIFT K_S] > 'ث' ++ [SHIFT K_A] > 'آ' ++ [K_PERIOD] > '.' ++ [K_COMMA] > '،' ++ [K_M] > 'م' ++ [K_N] > 'ن' ++ [K_B] > 'ب' ++ [K_C] > 'چ' ++ [K_Z] > 'ز' ++ [K_P] > 'پ' ++ [K_Y] > 'ی' ++ [K_T] > 'ت' ++ [K_R] > 'ر' ++ [K_E] > 'ے' ++ [K_W] > 'و' ++ [K_Q] > 'ئ' ++ [K_COLON] > '؛' ++ [K_L] > 'ل' ++ [K_K] > 'ک' ++ [K_J] > 'ج' ++ [K_H] > 'ه' ++ [K_D] > 'د' ++ [K_S] > 'س' ++ [K_A] > 'ا' \ No newline at end of file diff --git a/developer/kmcompx/tests/get_test_source_exclude_some_kmn.bat b/developer/kmcompx/tests/get_test_source_exclude_some_kmn.bat index 3a94dc5806..a9fde63530 100644 --- a/developer/kmcompx/tests/get_test_source_exclude_some_kmn.bat +++ b/developer/kmcompx/tests/get_test_source_exclude_some_kmn.bat @@ -6,8 +6,8 @@ rem no *bmp file included in Folder rem - eKwTamil99UniUpdt rem use of other folders than /source -rem - vn_telex/raw/header -rem - vn_vni/raw/header +rem - vietnamese_telex_legacy\extras\vn_kmn_compiler\vn_telex\raw +rem - vietnamese_vni\extras\vn_kmn_compiler\keyboard\vn_vni\raw rem need more time to prevent TIMEOUT ( run while debugging in VS) rem - vietnamese_telex diff --git a/developer/kmcompx/tests/kmcompxtest.cpp b/developer/kmcompx/tests/kmcompxtest.cpp index 4cd7a158b9..0b6785bc6a 100644 --- a/developer/kmcompx/tests/kmcompxtest.cpp +++ b/developer/kmcompx/tests/kmcompxtest.cpp @@ -6,7 +6,7 @@ #include #include -#include +#include "kmcompx.h" #include #include #include