mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-16 05:39:24 +00:00
chore(core): Merge branch 'chore/core/15913-unit-test-follow-on'
This commit is contained in:
commit
f4e94fb3ef
8 changed files with 31 additions and 30 deletions
|
|
@ -69,7 +69,7 @@ KmxTestSource::parse_source_string(std::string const &s, std::u16string& result)
|
|||
std::string s1 = s.substr(p - s.begin(), 8);
|
||||
v = std::stoul(s1, &n, 16);
|
||||
// Allow deadkey_number (U+0001) characters and onward
|
||||
if(!(v >= 0x0001 && v <= 0x10FFFF)) {
|
||||
if(v < 0x0001 || v > 0x10FFFF) {
|
||||
return false;
|
||||
}
|
||||
p += n - 1;
|
||||
|
|
|
|||
|
|
@ -26,14 +26,14 @@ class DebugApiTests : public testing::Test {
|
|||
protected:
|
||||
km_core_keyboard * test_kb = nullptr;
|
||||
km_core_state * test_state = nullptr;
|
||||
km_core_context_item * citems = nullptr;
|
||||
km_core_context_item * context_items = nullptr;
|
||||
|
||||
void Initialize(const char *keyboard) {
|
||||
km::core::path path = km::core::path(test_dir / ".." / "kmx" / keyboard);
|
||||
auto blob = km::tests::load_kmx_file(path.native().c_str());
|
||||
ASSERT_STATUS_OK(km_core_keyboard_load_from_blob(path.stem().c_str(), blob.data(), blob.size(), &test_kb));
|
||||
ASSERT_STATUS_OK(km_core_state_create(test_kb, test_empty_env_opts, &test_state));
|
||||
ASSERT_STATUS_OK(context_items_from_utf16(u"Hello 😁", &citems));
|
||||
ASSERT_STATUS_OK(context_items_from_utf16(u"Hello 😁", &context_items));
|
||||
|
||||
// Pre-test sanity: ensure debugging is disabled
|
||||
ASSERT_EQ(km_core_state_debug_get(test_state), 0);
|
||||
|
|
@ -43,14 +43,14 @@ protected:
|
|||
km_core_state_debug_item{KM_CORE_DEBUG_END, {}, {}, {}}
|
||||
}));
|
||||
|
||||
ASSERT_STATUS_OK(km_core_context_set(km_core_state_context(test_state), citems));
|
||||
ASSERT_STATUS_OK(km_core_context_set(km_core_state_app_context(test_state), citems));
|
||||
ASSERT_STATUS_OK(km_core_context_set(km_core_state_context(test_state), context_items));
|
||||
ASSERT_STATUS_OK(km_core_context_set(km_core_state_app_context(test_state), context_items));
|
||||
}
|
||||
|
||||
void TearDown() override {
|
||||
if(citems) {
|
||||
km_core_context_items_dispose(citems);
|
||||
citems = nullptr;
|
||||
if(context_items) {
|
||||
km_core_context_items_dispose(context_items);
|
||||
context_items = nullptr;
|
||||
}
|
||||
if(test_state) {
|
||||
km_core_state_dispose(test_state);
|
||||
|
|
|
|||
|
|
@ -16,14 +16,13 @@
|
|||
|
||||
#include "../helpers/core_test_helpers.h"
|
||||
|
||||
using namespace km::core::kmx;
|
||||
|
||||
/**
|
||||
* This test will test the infrastructure around the external event processing
|
||||
* The functions tested are:
|
||||
* - km_core_event with the event KM_CORE_EVENT_KEYBOARD_ACTIVATED
|
||||
*/
|
||||
|
||||
using namespace km::core::kmx;
|
||||
|
||||
TEST(ExternalEventTests, TestExternalEvent) {
|
||||
|
||||
km_core_keyboard * test_kb = nullptr;
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ protected:
|
|||
auto blob = km::tests::load_kmx_file(path.native().c_str());
|
||||
const auto mock_extension = ".mock";
|
||||
if (strlen(keyboard) > strlen(mock_extension) && strcmp(keyboard + strlen(keyboard) - strlen(mock_extension), mock_extension) == 0) {
|
||||
// mocked keyboard load
|
||||
km::core::abstract_processor* kp = new km::core::mock_processor(keyboard);
|
||||
test_kb = static_cast<km_core_keyboard*>(kp);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ bool action_items(
|
|||
}
|
||||
}
|
||||
|
||||
if(n != 0) {
|
||||
if(n > 0) {
|
||||
std::cout << "actual longer than expected" << std::endl;
|
||||
km::tests::print_action_item("next actual item:", *act);
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ main(int argc, char **argv) {
|
|||
#ifdef __EMSCRIPTEN__
|
||||
if(!get_wasm_file_path(km::core::path(argv[0]).parent(), test_dir)) {
|
||||
// not a fully qualified path
|
||||
std::cout << "Error: argv[0] did not give a fully qualified path!" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -51,22 +51,22 @@ protected:
|
|||
km_core_cu_dispose(context);
|
||||
}
|
||||
|
||||
void is_identical_context(km_core_cu const *cached_context, km_core_debug_context_type context_type) {
|
||||
void assert_identical_context(km_core_cu const *cached_context, km_core_debug_context_type context_type) {
|
||||
size_t buf_size;
|
||||
km_core_context_item * citems = nullptr;
|
||||
km_core_context_item * context_items = nullptr;
|
||||
|
||||
debug_context(context_type);
|
||||
|
||||
if(context_type == KM_CORE_DEBUG_CONTEXT_APP) {
|
||||
ASSERT_STATUS_OK(km_core_context_get(km_core_state_app_context(test_state), &citems));
|
||||
ASSERT_STATUS_OK(km_core_context_get(km_core_state_app_context(test_state), &context_items));
|
||||
} else {
|
||||
ASSERT_STATUS_OK(km_core_context_get(km_core_state_context(test_state), &citems));
|
||||
ASSERT_STATUS_OK(km_core_context_get(km_core_state_context(test_state), &context_items));
|
||||
}
|
||||
ASSERT_STATUS_OK(context_items_to_utf16(citems, nullptr, &buf_size));
|
||||
ASSERT_STATUS_OK(context_items_to_utf16(context_items, nullptr, &buf_size));
|
||||
km_core_cu* new_cached_context = new km_core_cu[buf_size];
|
||||
ASSERT_STATUS_OK(context_items_to_utf16(citems, new_cached_context, &buf_size));
|
||||
ASSERT_STATUS_OK(context_items_to_utf16(context_items, new_cached_context, &buf_size));
|
||||
|
||||
km_core_context_items_dispose(citems);
|
||||
km_core_context_items_dispose(context_items);
|
||||
|
||||
ASSERT_EQ(std::u16string(cached_context), new_cached_context);
|
||||
delete[] new_cached_context;
|
||||
|
|
@ -77,8 +77,8 @@ TEST_F(ContextNormalizationTests, TestContextNormalizationAlreadyNfd) {
|
|||
km_core_cu const *app_context_nfd = u"A\u0300";
|
||||
ASSERT_NO_FATAL_FAILURE(Initialize("k_001_tiny.kmx"));
|
||||
ASSERT_EQ(km_core_state_context_set_if_needed(test_state, app_context_nfd), KM_CORE_CONTEXT_STATUS_UPDATED);
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(app_context_nfd, KM_CORE_DEBUG_CONTEXT_APP));
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(app_context_nfd, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(app_context_nfd, KM_CORE_DEBUG_CONTEXT_APP));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(app_context_nfd, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
}
|
||||
|
||||
TEST_F(ContextNormalizationTests, TestContextNormalizationBasic) {
|
||||
|
|
@ -86,8 +86,8 @@ TEST_F(ContextNormalizationTests, TestContextNormalizationBasic) {
|
|||
km_core_cu const *cached_context = u"This is a test A\u0300";
|
||||
ASSERT_NO_FATAL_FAILURE(Initialize("k_001_tiny.kmx"));
|
||||
ASSERT_EQ(km_core_state_context_set_if_needed(test_state, application_context), KM_CORE_CONTEXT_STATUS_UPDATED);
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(application_context, KM_CORE_DEBUG_CONTEXT_APP));
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(cached_context, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(application_context, KM_CORE_DEBUG_CONTEXT_APP));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(cached_context, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
}
|
||||
|
||||
TEST_F(ContextNormalizationTests, TestContextNormalizationHefty) {
|
||||
|
|
@ -96,8 +96,8 @@ TEST_F(ContextNormalizationTests, TestContextNormalizationHefty) {
|
|||
km_core_cu const *cached_context = u"A\u0300" u"e\u0316\u0301" u"\u0073\u0323\u0307" u"\u0041\u030a" u"\U000114B9\U000114B0";
|
||||
ASSERT_NO_FATAL_FAILURE(Initialize("k_001_tiny.kmx"));
|
||||
ASSERT_EQ(km_core_state_context_set_if_needed(test_state, application_context), KM_CORE_CONTEXT_STATUS_UPDATED);
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(application_context, KM_CORE_DEBUG_CONTEXT_APP));
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(cached_context, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(application_context, KM_CORE_DEBUG_CONTEXT_APP));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(cached_context, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -110,8 +110,8 @@ TEST_F(ContextNormalizationTests, TestContextNormalizationInvalidUnicode) {
|
|||
km_core_cu const cached_context[] = { 0xDC01, 0x0020, 0x0020, 0xFFFF, 0x0000 };
|
||||
ASSERT_NO_FATAL_FAILURE(Initialize("k_001_tiny.kmx"));
|
||||
ASSERT_EQ(km_core_state_context_set_if_needed(test_state, application_context), KM_CORE_CONTEXT_STATUS_UPDATED);
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(application_context, KM_CORE_DEBUG_CONTEXT_APP));
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(cached_context, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(application_context, KM_CORE_DEBUG_CONTEXT_APP));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(cached_context, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
}
|
||||
|
||||
TEST_F(ContextNormalizationTests, TestContextNormalizationLoneTrailingSurrogate) {
|
||||
|
|
@ -120,6 +120,6 @@ TEST_F(ContextNormalizationTests, TestContextNormalizationLoneTrailingSurrogate)
|
|||
km_core_cu const cached_context[] = /* skipped*/ { 0x0020, 0x0020, 0x0000 };
|
||||
ASSERT_NO_FATAL_FAILURE(Initialize("k_001_tiny.kmx"));
|
||||
ASSERT_EQ(km_core_state_context_set_if_needed(test_state, application_context), KM_CORE_CONTEXT_STATUS_UPDATED);
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(application_context+1, KM_CORE_DEBUG_CONTEXT_APP)); // first code unit is skipped
|
||||
ASSERT_NO_FATAL_FAILURE(is_identical_context(cached_context, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(application_context+1, KM_CORE_DEBUG_CONTEXT_APP)); // first code unit is skipped
|
||||
ASSERT_NO_FATAL_FAILURE(assert_identical_context(cached_context, KM_CORE_DEBUG_CONTEXT_CACHED));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,4 +86,4 @@ builder_run_action configure do_configure
|
|||
builder_run_action build do_build
|
||||
builder_run_action build-fixtures do_build_fixtures
|
||||
builder_run_action api api-extractor run --local --verbose
|
||||
builder_run_action test typescript_run_eslint_mocha_tests 90
|
||||
builder_run_action test typescript_run_eslint_mocha_tests 85
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue