Skip to content

Commit e4a8d47

Browse files
committed
Issue: #5027
Add unit tests for modifier-aware key name generation in learn module. - add tests/src/learn_modifiers.c - cover none/single/combined modifier combinations - register learn_modifiers test in tests/src/Makefile.am
1 parent 059e1bd commit e4a8d47

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

tests/src/Makefile.am

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ TESTS = \
3232
execute__execute_external_editor_or_viewer \
3333
execute__execute_get_external_cmd_opts_from_config \
3434
file_history \
35+
learn_modifiers \
3536
usermenu__test_condition \
3637
usermenu__test_expand_format
3738

@@ -51,6 +52,9 @@ execute__execute_get_external_cmd_opts_from_config_SOURCES = \
5152
file_history_SOURCES = \
5253
file_history.c
5354

55+
learn_modifiers_SOURCES = \
56+
learn_modifiers.c
57+
5458
usermenu__test_condition_SOURCES = \
5559
usermenu__test_condition.c
5660

tests/src/learn_modifiers.c

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
src/learn - tests for modifier-aware key names
3+
4+
Copyright (C) 2026
5+
Free Software Foundation, Inc.
6+
*/
7+
8+
#define TEST_SUITE_NAME "/src/learn"
9+
10+
#include "tests/mctest.h"
11+
12+
#include "lib/tty/key.h"
13+
14+
#include "src/learn.c"
15+
16+
/* --------------------------------------------------------------------------------------------- */
17+
18+
START_TEST (test_learn_build_key_name_without_modifiers)
19+
{
20+
char *name;
21+
22+
name = learn_build_key_name ("up", 0);
23+
mctest_assert_str_eq (name, "up");
24+
g_free (name);
25+
}
26+
END_TEST
27+
28+
/* --------------------------------------------------------------------------------------------- */
29+
30+
START_TEST (test_learn_build_key_name_single_modifiers)
31+
{
32+
char *name;
33+
34+
name = learn_build_key_name ("f9", KEY_M_CTRL);
35+
mctest_assert_str_eq (name, "ctrl-f9");
36+
g_free (name);
37+
38+
name = learn_build_key_name ("right", KEY_M_ALT);
39+
mctest_assert_str_eq (name, "meta-right");
40+
g_free (name);
41+
42+
name = learn_build_key_name ("left", KEY_M_SHIFT);
43+
mctest_assert_str_eq (name, "shift-left");
44+
g_free (name);
45+
}
46+
END_TEST
47+
48+
/* --------------------------------------------------------------------------------------------- */
49+
50+
START_TEST (test_learn_build_key_name_combined_modifiers)
51+
{
52+
char *name;
53+
54+
name = learn_build_key_name ("up", KEY_M_CTRL | KEY_M_SHIFT);
55+
mctest_assert_str_eq (name, "ctrl-shift-up");
56+
g_free (name);
57+
58+
name = learn_build_key_name ("pgdn", KEY_M_CTRL | KEY_M_ALT | KEY_M_SHIFT);
59+
mctest_assert_str_eq (name, "ctrl-meta-shift-pgdn");
60+
g_free (name);
61+
}
62+
END_TEST
63+
64+
/* --------------------------------------------------------------------------------------------- */
65+
66+
int
67+
main (void)
68+
{
69+
TCase *tc_core;
70+
71+
tc_core = tcase_create ("Core");
72+
tcase_add_test (tc_core, test_learn_build_key_name_without_modifiers);
73+
tcase_add_test (tc_core, test_learn_build_key_name_single_modifiers);
74+
tcase_add_test (tc_core, test_learn_build_key_name_combined_modifiers);
75+
76+
return mctest_run_all (tc_core);
77+
}

0 commit comments

Comments
 (0)