]>
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 | ||
b45b0a69 LP |
39 | static void test_locale_is_installed(void) { |
40 | log_info("/* %s */", __func__); | |
41 | ||
42 | /* Always available */ | |
43 | assert_se(locale_is_installed("POSIX") > 0); | |
44 | assert_se(locale_is_installed("C") > 0); | |
45 | ||
46 | /* Might, or might not be installed. */ | |
47 | assert_se(locale_is_installed("en_EN.utf8") >= 0); | |
48 | assert_se(locale_is_installed("fr_FR.utf8") >= 0); | |
49 | assert_se(locale_is_installed("fr_FR@euro") >= 0); | |
50 | assert_se(locale_is_installed("fi_FI") >= 0); | |
51 | ||
52 | /* Definitely not valid */ | |
53 | assert_se(locale_is_installed("") == 0); | |
54 | assert_se(locale_is_installed("/usr/bin/foo") == 0); | |
55 | assert_se(locale_is_installed("\x01gar\x02 bage\x03") == 0); | |
56 | ||
57 | /* Definitely not installed */ | |
58 | assert_se(locale_is_installed("zz_ZZ") == 0); | |
59 | } | |
60 | ||
ed457f13 TB |
61 | static void test_keymaps(void) { |
62 | _cleanup_strv_free_ char **kmaps = NULL; | |
63 | char **p; | |
64 | int r; | |
65 | ||
e206fcc1 ZJS |
66 | log_info("/* %s */", __func__); |
67 | ||
ed457f13 TB |
68 | assert_se(!keymap_is_valid("")); |
69 | assert_se(!keymap_is_valid("/usr/bin/foo")); | |
70 | assert_se(!keymap_is_valid("\x01gar\x02 bage\x03")); | |
71 | ||
72 | r = get_keymaps(&kmaps); | |
73 | if (r == -ENOENT) | |
74 | return; /* skip test if no keymaps are installed */ | |
75 | ||
76 | assert_se(r >= 0); | |
77 | assert_se(kmaps); | |
78 | ||
79 | STRV_FOREACH(p, kmaps) { | |
80 | puts(*p); | |
81 | assert_se(keymap_is_valid(*p)); | |
82 | } | |
83 | ||
84 | assert_se(keymap_is_valid("uk")); | |
85 | assert_se(keymap_is_valid("de-nodeadkeys")); | |
86 | assert_se(keymap_is_valid("ANSI-dvorak")); | |
87 | assert_se(keymap_is_valid("unicode")); | |
88 | } | |
89 | ||
e206fcc1 ZJS |
90 | #define dump_glyph(x) log_info(STRINGIFY(x) ": %s", special_glyph(x)) |
91 | static void dump_special_glyphs(void) { | |
428d32af | 92 | assert_cc(SPECIAL_GLYPH_TOUCH + 1 == _SPECIAL_GLYPH_MAX); |
e206fcc1 ZJS |
93 | |
94 | log_info("/* %s */", __func__); | |
95 | ||
96 | log_info("is_locale_utf8: %s", yes_no(is_locale_utf8())); | |
97 | ||
9a6f746f LP |
98 | dump_glyph(SPECIAL_GLYPH_TREE_VERTICAL); |
99 | dump_glyph(SPECIAL_GLYPH_TREE_BRANCH); | |
100 | dump_glyph(SPECIAL_GLYPH_TREE_RIGHT); | |
101 | dump_glyph(SPECIAL_GLYPH_TREE_SPACE); | |
102 | dump_glyph(SPECIAL_GLYPH_TRIANGULAR_BULLET); | |
103 | dump_glyph(SPECIAL_GLYPH_BLACK_CIRCLE); | |
104 | dump_glyph(SPECIAL_GLYPH_BULLET); | |
105 | dump_glyph(SPECIAL_GLYPH_ARROW); | |
9a6f746f LP |
106 | dump_glyph(SPECIAL_GLYPH_ELLIPSIS); |
107 | dump_glyph(SPECIAL_GLYPH_MU); | |
108 | dump_glyph(SPECIAL_GLYPH_CHECK_MARK); | |
109 | dump_glyph(SPECIAL_GLYPH_CROSS_MARK); | |
a90fb08c | 110 | dump_glyph(SPECIAL_GLYPH_EXTERNAL_LINK); |
9a6f746f LP |
111 | dump_glyph(SPECIAL_GLYPH_ECSTATIC_SMILEY); |
112 | dump_glyph(SPECIAL_GLYPH_HAPPY_SMILEY); | |
113 | dump_glyph(SPECIAL_GLYPH_SLIGHTLY_HAPPY_SMILEY); | |
114 | dump_glyph(SPECIAL_GLYPH_NEUTRAL_SMILEY); | |
115 | dump_glyph(SPECIAL_GLYPH_SLIGHTLY_UNHAPPY_SMILEY); | |
116 | dump_glyph(SPECIAL_GLYPH_UNHAPPY_SMILEY); | |
117 | dump_glyph(SPECIAL_GLYPH_DEPRESSED_SMILEY); | |
48d70b4a | 118 | dump_glyph(SPECIAL_GLYPH_LOCK_AND_KEY); |
428d32af | 119 | dump_glyph(SPECIAL_GLYPH_TOUCH); |
e206fcc1 ZJS |
120 | } |
121 | ||
2b89a960 RC |
122 | int main(int argc, char *argv[]) { |
123 | test_get_locales(); | |
124 | test_locale_is_valid(); | |
b45b0a69 | 125 | test_locale_is_installed(); |
ed457f13 TB |
126 | test_keymaps(); |
127 | ||
e206fcc1 ZJS |
128 | dump_special_glyphs(); |
129 | ||
2b89a960 RC |
130 | return 0; |
131 | } |