]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
2b89a960 | 2 | |
f05e1d0d | 3 | #include "kbd-util.h" |
2b89a960 | 4 | #include "locale-util.h" |
2b89a960 | 5 | #include "macro.h" |
cf0fbc49 | 6 | #include "strv.h" |
ca78ad1d | 7 | #include "util.h" |
2b89a960 RC |
8 | |
9 | static void test_get_locales(void) { | |
10 | _cleanup_strv_free_ char **locales = NULL; | |
11 | char **p; | |
12 | int r; | |
13 | ||
14 | r = get_locales(&locales); | |
15 | assert_se(r >= 0); | |
16 | assert_se(locales); | |
17 | ||
18 | STRV_FOREACH(p, locales) { | |
19 | puts(*p); | |
20 | assert_se(locale_is_valid(*p)); | |
21 | } | |
22 | } | |
23 | ||
24 | static void test_locale_is_valid(void) { | |
e206fcc1 ZJS |
25 | log_info("/* %s */", __func__); |
26 | ||
2b89a960 RC |
27 | assert_se(locale_is_valid("en_EN.utf8")); |
28 | assert_se(locale_is_valid("fr_FR.utf8")); | |
29 | assert_se(locale_is_valid("fr_FR@euro")); | |
30 | assert_se(locale_is_valid("fi_FI")); | |
31 | assert_se(locale_is_valid("POSIX")); | |
32 | assert_se(locale_is_valid("C")); | |
33 | ||
34 | assert_se(!locale_is_valid("")); | |
35 | assert_se(!locale_is_valid("/usr/bin/foo")); | |
36 | assert_se(!locale_is_valid("\x01gar\x02 bage\x03")); | |
37 | } | |
38 | ||
ed457f13 TB |
39 | static void test_keymaps(void) { |
40 | _cleanup_strv_free_ char **kmaps = NULL; | |
41 | char **p; | |
42 | int r; | |
43 | ||
e206fcc1 ZJS |
44 | log_info("/* %s */", __func__); |
45 | ||
ed457f13 TB |
46 | assert_se(!keymap_is_valid("")); |
47 | assert_se(!keymap_is_valid("/usr/bin/foo")); | |
48 | assert_se(!keymap_is_valid("\x01gar\x02 bage\x03")); | |
49 | ||
50 | r = get_keymaps(&kmaps); | |
51 | if (r == -ENOENT) | |
52 | return; /* skip test if no keymaps are installed */ | |
53 | ||
54 | assert_se(r >= 0); | |
55 | assert_se(kmaps); | |
56 | ||
57 | STRV_FOREACH(p, kmaps) { | |
58 | puts(*p); | |
59 | assert_se(keymap_is_valid(*p)); | |
60 | } | |
61 | ||
62 | assert_se(keymap_is_valid("uk")); | |
63 | assert_se(keymap_is_valid("de-nodeadkeys")); | |
64 | assert_se(keymap_is_valid("ANSI-dvorak")); | |
65 | assert_se(keymap_is_valid("unicode")); | |
66 | } | |
67 | ||
e206fcc1 ZJS |
68 | #define dump_glyph(x) log_info(STRINGIFY(x) ": %s", special_glyph(x)) |
69 | static void dump_special_glyphs(void) { | |
9a6f746f | 70 | assert_cc(SPECIAL_GLYPH_DEPRESSED_SMILEY + 1 == _SPECIAL_GLYPH_MAX); |
e206fcc1 ZJS |
71 | |
72 | log_info("/* %s */", __func__); | |
73 | ||
74 | log_info("is_locale_utf8: %s", yes_no(is_locale_utf8())); | |
75 | ||
9a6f746f LP |
76 | dump_glyph(SPECIAL_GLYPH_TREE_VERTICAL); |
77 | dump_glyph(SPECIAL_GLYPH_TREE_BRANCH); | |
78 | dump_glyph(SPECIAL_GLYPH_TREE_RIGHT); | |
79 | dump_glyph(SPECIAL_GLYPH_TREE_SPACE); | |
80 | dump_glyph(SPECIAL_GLYPH_TRIANGULAR_BULLET); | |
81 | dump_glyph(SPECIAL_GLYPH_BLACK_CIRCLE); | |
82 | dump_glyph(SPECIAL_GLYPH_BULLET); | |
83 | dump_glyph(SPECIAL_GLYPH_ARROW); | |
84 | dump_glyph(SPECIAL_GLYPH_MDASH); | |
85 | dump_glyph(SPECIAL_GLYPH_ELLIPSIS); | |
86 | dump_glyph(SPECIAL_GLYPH_MU); | |
87 | dump_glyph(SPECIAL_GLYPH_CHECK_MARK); | |
88 | dump_glyph(SPECIAL_GLYPH_CROSS_MARK); | |
89 | dump_glyph(SPECIAL_GLYPH_ECSTATIC_SMILEY); | |
90 | dump_glyph(SPECIAL_GLYPH_HAPPY_SMILEY); | |
91 | dump_glyph(SPECIAL_GLYPH_SLIGHTLY_HAPPY_SMILEY); | |
92 | dump_glyph(SPECIAL_GLYPH_NEUTRAL_SMILEY); | |
93 | dump_glyph(SPECIAL_GLYPH_SLIGHTLY_UNHAPPY_SMILEY); | |
94 | dump_glyph(SPECIAL_GLYPH_UNHAPPY_SMILEY); | |
95 | dump_glyph(SPECIAL_GLYPH_DEPRESSED_SMILEY); | |
e206fcc1 ZJS |
96 | } |
97 | ||
2b89a960 RC |
98 | int main(int argc, char *argv[]) { |
99 | test_get_locales(); | |
100 | test_locale_is_valid(); | |
ed457f13 TB |
101 | test_keymaps(); |
102 | ||
e206fcc1 ZJS |
103 | dump_special_glyphs(); |
104 | ||
2b89a960 RC |
105 | return 0; |
106 | } |