spiegel-keyman/core/tests/unit/ldml
Marc Durdin 19101c6a2a chore(core): cleanup meson build
This updates our meson min version on Windows to 1.0, which means that
we can avoid having Visual Studio on the path, as meson can find it
anyway. With this change, we can eliminate the batch-wrapper for the
build, significantly improving build performance and simplifying the
scripts.

This also adds a change to disable tests for dependency builds of core,
along with the `--no-tests` command line option for doing builds without
tests.

Minor cleanup includes eliminating various warnings from meson.build
files, and standardizing WASM cross-platform build options for Windows.
2023-02-21 12:12:28 +07:00
..
invalid-keyboards chore(core): add unit test for zero checksum 2022-09-12 05:46:13 +10:00
keyboards feat(core): ldml json test executor 🙀 2023-02-16 13:59:44 -06:00
ldml.cpp Update core/tests/unit/ldml/ldml.cpp 2023-02-18 09:34:53 -06:00
ldml_test_source.cpp Update core/tests/unit/ldml/ldml_test_source.cpp 2023-02-18 09:35:17 -06:00
ldml_test_source.hpp feat(core): ldml json test executor 🙀 2023-02-16 12:33:32 -06:00
meson.build chore(core): cleanup meson build 2023-02-21 12:12:28 +07:00
README.md feat(core): ldml unit tests and stub actions 2022-08-07 08:02:50 -05:00
test_kmx_plus.cpp feat(common): ldml: merge keys into key2 🙀 2023-02-16 12:29:19 -06: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'