feat(core): move kmx_plus.tests.cpp to GTest

- also update test_assert.h to vector to GTest if present
This commit is contained in:
Steven R. Loomis 2025-03-13 15:05:55 -05:00
parent a7c7ecccfb
commit 1306cf8760
3 changed files with 33 additions and 39 deletions

View file

@ -28,25 +28,39 @@
#ifdef try_status
#undef try_status
#endif
#if defined(EXPECT_EQ)
/* vector to GTest where available */
#define try_status(expr) EXPECT_EQ((expr), KM_CORE_STATUS_OK)
#else
#define try_status(expr) { \
auto __s = (expr); \
if (__s != KM_CORE_STATUS_OK) { \
_test_assert_failed(__s, u ## #expr); \
} \
}
#endif
#ifdef test_assert
#undef test_assert
#endif
#if defined(EXPECT_TRUE)
/* vector to GTest where available */
# define test_assert(expr) EXPECT_TRUE(expr) << "test_assert failed"
#else
#define test_assert(expr) { \
if (!(expr)) { \
_test_assert_failed(0, u ## #expr); \
} \
}
#endif
#ifdef test_assert_equal
#undef test_assert_equal
#endif
#if defined(EXPECT_EQ)
/* vector to GTest where available */
#define test_assert_equal(actual, expected) EXPECT_EQ(actual, expected)
#else
#define test_assert_equal(actual, expected) { \
if ((actual) != (expected)) { \
std::wcerr << console_color::fg(console_color::BRIGHT_RED) \
@ -58,10 +72,15 @@
std::exit(EXIT_FAILURE); \
} \
}
#endif
#ifdef test_assert_string_equal
#undef test_assert_string_equal
#endif
#if defined(EXPECT_EQ)
/* vector to GTest where available */
#define test_assert_string_equal(actual, expected) EXPECT_EQ(actual, expected)
#else
#define test_assert_string_equal(actual, expected) { \
if (u16cmp((actual), (expected)) != 0) { \
std::wcerr << console_color::fg(console_color::BRIGHT_RED) \
@ -73,3 +92,4 @@
std::exit(EXIT_FAILURE); \
} \
}
#endif

View file

@ -1,4 +1,5 @@
#include <cstdint>
#include <gtest/gtest.h>
#include <test_assert.h>
#include "kmx/kmx_plus.h"
#include "kmx/kmx_xstring.h"
@ -12,9 +13,7 @@
using namespace km::core::kmx;
int test_COMP_KMXPLUS_KEYS_KEY() {
std::cout << "== " << __FUNCTION__ << std::endl;
TEST(KMXPlusTest, test_COMP_KMXPLUS_KEYS_KEY) {
COMP_KMXPLUS_KEYS_KEY e[2] = {
{
0x00000127, // to = U+0127 = 295
@ -55,13 +54,9 @@ int test_COMP_KMXPLUS_KEYS_KEY() {
test_assert_equal(es1.at(0), 0xD83D);
test_assert_equal(es1.at(1), 0xDE40);
test_assert(es1 == std::u16string(u"🙀"));
return EXIT_SUCCESS;
}
int test_ldml_vkeys() {
std::cout << "== " << __FUNCTION__ << std::endl;
TEST(KMXPlusTest, test_ldml_vkeys) {
km::core::ldml::vkeys vk;
#define ADD_VKEY(k, m) { \
@ -151,13 +146,9 @@ int test_ldml_vkeys() {
"K_E"), RCTRLFLAG|LALTFLAG, found), u"K_E-K_ALTFLAG|RCTRLFLAG");
test_assert_equal(vk.lookup(km::tests::get_vk(
"K_E"), RCTRLFLAG|RALTFLAG, found), u"K_E-K_ALTFLAG|RCTRLFLAG");
return EXIT_SUCCESS;
}
int test_uset() {
std::cout << "== " << __FUNCTION__ << std::endl;
TEST(KMXPlusTest, test_uset) {
const COMP_KMXPLUS_USET_RANGE r[] = {
{0x61, 0x7a}, // [a-z]
{0x127, 0x127} // [ħ]
@ -171,31 +162,10 @@ int test_uset() {
SimpleUSet uempty;
test_assert_equal(uempty.contains(0x62), false);
test_assert_equal(uempty.contains(0x127), false);
return EXIT_SUCCESS;
}
int
main(int argc, const char *argv[]) {
int rc = EXIT_SUCCESS;
if (test_COMP_KMXPLUS_KEYS_KEY() != EXIT_SUCCESS) {
rc = EXIT_FAILURE;
}
if (test_ldml_vkeys() != EXIT_SUCCESS) {
rc = EXIT_FAILURE;
}
if (test_uset() != EXIT_SUCCESS) {
rc = EXIT_FAILURE;
}
if (rc == EXIT_FAILURE) {
std::cout << "== FAILURE" << std::endl;
} else {
std::cout << "== PASS" << std::endl;
}
return rc;
GTEST_API_ int
main(int argc, char **argv) {
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

View file

@ -19,6 +19,10 @@ if node.found()
subdir('invalid-keyboards')
endif
gtest = subproject('gtest')
gtest_dep = gtest.get_variable('gtest_dep')
gmock_dep = gtest.get_variable('gmock_dep')
# Build ldml test executable
keyboard_build_path = meson.current_build_dir() / 'keyboards'
@ -87,7 +91,7 @@ e = executable('kmx_plus_tests', 'kmx_plus.tests.cpp',
cpp_args: defns + warns,
include_directories: [inc, libsrc, '../../../../developer/src/ext/json'],
link_args: links + tests_flags,
dependencies: [icu_uc, icu_i18n],
dependencies: [icu_uc, icu_i18n, gtest_dep, gmock_dep],
objects: lib.extract_all_objects(recursive: false))
test('kmx_plus_tests', e, suite: 'ldml')