mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-19 23:07:42 +00:00
Consolidate test frameworks and cleanup, including: * all tests use Google Test * reorganize folders, esp. kmnkbd -> api * move all api tests into api folder * replace references to test_assert or test_color with gtest equivalents * leverage gtest patterns to remove boilerplate code * dramatically simplify meson.build files and localize variables * move shared helper code into helpers/ folder * make test names unique and add gtest protocol for reporting back to teamcity Fixes: * CLDR test keyboards had invalid unicodeset escapes (needs to be raised upstream also) - was not failing tests because files were not loading but returning success Test-bot: skip
1.7 KiB
1.7 KiB
LDML unit tests
This directory contains unit tests that test the LDML keyboard processing and related functions.
For the fixture-based tests, the driver (ldml.tests.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 `./core/build.sh test'.
Alternatively it's possible to run a single test with:
cd core
build/<arch>/<configuration>/tests/unit/ldml/ldml-tests 'tests/unit/ldml/fixtures/keyboards/000_test_zero.xml' 'tests/unit/ldml/fixtures/keyboards/000_test_zero.kmx'