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