spiegel-keyman/core/tests/unit/ldml
Eberhard Beilharz 3dc3f040de
feat(core): implement loading KMX from blob
- split keyboard loading into loading KMX file into blob and then
  loading the keyboard processor from the blob.
- deprecate `km_core_keyboard_load`
- move file access next to deprecated method. This is now the only place
  that loads a file in Core; unit tests have some more places that
  load files.
- introduce GTest and add unit tests for loading from blob

Cherry-picked from `epic/web-core` branch.

Cherry-Pick-Commit: 1deaa323ad
Cherry-Pick-Commit: 59019cc8b7
Cherry-Pick-Commit: bc46458368
Cherry-Pick-Commit: d06aa29956
Cherry-Pick-Commit: 1c88166f6e
Cherry-Pick-Commit: 069cd21ecd
Cherry-Pick-Commit: 052ae2ec35
Cherry-Pick-Commit: 11a2a3ba3a

Part-of: #11293
Part-of: #8093
2024-11-27 15:30:05 +01:00
..
invalid-keyboards chore(common): cleanup meson deprecations and warnings 2024-05-24 08:46:52 +07:00
keyboards chore(common): cleanup meson deprecations and warnings 2024-05-24 08:46:52 +07:00
context_normalization.tests.cpp feat(core): implement loading KMX from blob 2024-11-27 15:30:05 +01:00
core_ldml_min.tests.cpp feat(core): implement loading KMX from blob 2024-11-27 15:30:05 +01:00
kmx_plus.tests.cpp chore(core): rename test files 2024-11-26 17:47:11 +01:00
ldml.cpp feat(core): implement loading KMX from blob 2024-11-27 15:30:05 +01:00
ldml_test_source.cpp feat(core): implement loading KMX from blob 2024-11-27 15:30:05 +01:00
ldml_test_source.hpp fix(core): update ldml test source to handle reset 2024-04-05 13:22:47 -05:00
ldml_test_utils.cpp chore(linux): Rename namespace kbp to core 2023-10-19 10:39:55 +02:00
ldml_test_utils.hpp refactor(core): split context API from Core primary API 2024-01-17 14:44:25 +11:00
meson.build feat(core): implement loading KMX from blob 2024-11-27 15:30:05 +01:00
README.md feat(core): ldml unit tests and stub actions 2022-08-07 08:02:50 -05:00
transforms.tests.cpp chore(core): rename test files 2024-11-26 17:47:11 +01:00
unicode.tests.cpp chore(core): rename test files 2024-11-26 17:47:11 +01:00
write_node_versions.js fix(core): add a test to verify ICU and Unicode version 2024-05-23 09:31:15 -05:00

LDML unit tests

This directory contains unit tests that test the LDML keyboard processing.

The driver (ldml.cpp) loads and executes the tests. Each test consist of a Keyman keyboard source file (*.xml) and the compiled KMXPlus keyboard. The source file contains rules and defines the setup, input and expected results.

Defining tests in the .xml file

Somewhere near the top of the file, an XML comment contains lines that define the setup, input and expected results.

Setup

  • description: this is just for commenting what we test here
@@description: Tests Caps Lock env set
  • capsLock: allows to set the caps lock state. The example below turns caps-lock on at the start of the test. [K_CAPS] in the keys comment allows toggling of caps lock.
@@capsLock: 1
  • context: allows to setup a string which serves as context
@@context:

Input

  • keys: defines one or more virtual keys that will be processed one after the other
@@keys: [K_1][K_CAPS][K_2][SHIFT K_3][K_4][K_CAPS][K_5][K_CAPS][K_6]

Expected Result

  • expected: the resulting string of processing the input keys. In the example below each key press is expected to output the string 'pass.'.
@@expected: pass.pass.pass.pass.pass.pass.

Running the tests

All tests can be run at once with ./build.sh --debug tests.

Alternatively it's possible to run a single test with:

cd core
build/arch/debug/tests/unit/ldml/ldml 'tests/unit/ldml/000_test_zero.xml' 'tests/unit/ldml/000_test_zero.kmx'