]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
2b89a960 | 2 | |
d8e32c47 | 3 | #include "glyph-util.h" |
f05e1d0d | 4 | #include "kbd-util.h" |
2b89a960 | 5 | #include "locale-util.h" |
2b89a960 | 6 | #include "macro.h" |
cf0fbc49 | 7 | #include "strv.h" |
4f7452a8 | 8 | #include "tests.h" |
2b89a960 | 9 | |
4f7452a8 | 10 | TEST(get_locales) { |
2b89a960 | 11 | _cleanup_strv_free_ char **locales = NULL; |
2b89a960 RC |
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 | ||
4f7452a8 | 24 | TEST(locale_is_valid) { |
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 | ||
4f7452a8 | 37 | TEST(locale_is_installed) { |
b45b0a69 LP |
38 | /* Always available */ |
39 | assert_se(locale_is_installed("POSIX") > 0); | |
40 | assert_se(locale_is_installed("C") > 0); | |
41 | ||
42 | /* Might, or might not be installed. */ | |
43 | assert_se(locale_is_installed("en_EN.utf8") >= 0); | |
44 | assert_se(locale_is_installed("fr_FR.utf8") >= 0); | |
45 | assert_se(locale_is_installed("fr_FR@euro") >= 0); | |
46 | assert_se(locale_is_installed("fi_FI") >= 0); | |
47 | ||
48 | /* Definitely not valid */ | |
49 | assert_se(locale_is_installed("") == 0); | |
50 | assert_se(locale_is_installed("/usr/bin/foo") == 0); | |
51 | assert_se(locale_is_installed("\x01gar\x02 bage\x03") == 0); | |
52 | ||
53 | /* Definitely not installed */ | |
54 | assert_se(locale_is_installed("zz_ZZ") == 0); | |
55 | } | |
56 | ||
4f7452a8 | 57 | TEST(keymaps) { |
ed457f13 | 58 | _cleanup_strv_free_ char **kmaps = NULL; |
ed457f13 TB |
59 | int r; |
60 | ||
61 | assert_se(!keymap_is_valid("")); | |
62 | assert_se(!keymap_is_valid("/usr/bin/foo")); | |
63 | assert_se(!keymap_is_valid("\x01gar\x02 bage\x03")); | |
64 | ||
65 | r = get_keymaps(&kmaps); | |
66 | if (r == -ENOENT) | |
67 | return; /* skip test if no keymaps are installed */ | |
68 | ||
69 | assert_se(r >= 0); | |
70 | assert_se(kmaps); | |
71 | ||
72 | STRV_FOREACH(p, kmaps) { | |
73 | puts(*p); | |
74 | assert_se(keymap_is_valid(*p)); | |
75 | } | |
76 | ||
77 | assert_se(keymap_is_valid("uk")); | |
78 | assert_se(keymap_is_valid("de-nodeadkeys")); | |
79 | assert_se(keymap_is_valid("ANSI-dvorak")); | |
80 | assert_se(keymap_is_valid("unicode")); | |
81 | } | |
82 | ||
e206fcc1 | 83 | #define dump_glyph(x) log_info(STRINGIFY(x) ": %s", special_glyph(x)) |
4f7452a8 | 84 | TEST(dump_special_glyphs) { |
795ec90c | 85 | assert_cc(SPECIAL_GLYPH_GREEN_CIRCLE + 1 == _SPECIAL_GLYPH_MAX); |
e206fcc1 | 86 | |
e206fcc1 ZJS |
87 | log_info("is_locale_utf8: %s", yes_no(is_locale_utf8())); |
88 | ||
9a6f746f LP |
89 | dump_glyph(SPECIAL_GLYPH_TREE_VERTICAL); |
90 | dump_glyph(SPECIAL_GLYPH_TREE_BRANCH); | |
91 | dump_glyph(SPECIAL_GLYPH_TREE_RIGHT); | |
92 | dump_glyph(SPECIAL_GLYPH_TREE_SPACE); | |
fc03e80c | 93 | dump_glyph(SPECIAL_GLYPH_TREE_TOP); |
9117d94b | 94 | dump_glyph(SPECIAL_GLYPH_VERTICAL_DOTTED); |
71cb203a LP |
95 | dump_glyph(SPECIAL_GLYPH_HORIZONTAL_DOTTED); |
96 | dump_glyph(SPECIAL_GLYPH_HORIZONTAL_FAT); | |
9a6f746f LP |
97 | dump_glyph(SPECIAL_GLYPH_TRIANGULAR_BULLET); |
98 | dump_glyph(SPECIAL_GLYPH_BLACK_CIRCLE); | |
9ae5fed6 J |
99 | dump_glyph(SPECIAL_GLYPH_WHITE_CIRCLE); |
100 | dump_glyph(SPECIAL_GLYPH_MULTIPLICATION_SIGN); | |
101 | dump_glyph(SPECIAL_GLYPH_CIRCLE_ARROW); | |
9a6f746f | 102 | dump_glyph(SPECIAL_GLYPH_BULLET); |
9a6f746f LP |
103 | dump_glyph(SPECIAL_GLYPH_MU); |
104 | dump_glyph(SPECIAL_GLYPH_CHECK_MARK); | |
105 | dump_glyph(SPECIAL_GLYPH_CROSS_MARK); | |
c27465d7 LP |
106 | dump_glyph(SPECIAL_GLYPH_LIGHT_SHADE); |
107 | dump_glyph(SPECIAL_GLYPH_DARK_SHADE); | |
24aeaf4e | 108 | dump_glyph(SPECIAL_GLYPH_FULL_BLOCK); |
c27465d7 LP |
109 | dump_glyph(SPECIAL_GLYPH_SIGMA); |
110 | dump_glyph(SPECIAL_GLYPH_ARROW_UP); | |
111 | dump_glyph(SPECIAL_GLYPH_ARROW_DOWN); | |
112 | dump_glyph(SPECIAL_GLYPH_ARROW_LEFT); | |
113 | dump_glyph(SPECIAL_GLYPH_ARROW_RIGHT); | |
114 | dump_glyph(SPECIAL_GLYPH_ELLIPSIS); | |
a90fb08c | 115 | dump_glyph(SPECIAL_GLYPH_EXTERNAL_LINK); |
9a6f746f LP |
116 | dump_glyph(SPECIAL_GLYPH_ECSTATIC_SMILEY); |
117 | dump_glyph(SPECIAL_GLYPH_HAPPY_SMILEY); | |
118 | dump_glyph(SPECIAL_GLYPH_SLIGHTLY_HAPPY_SMILEY); | |
119 | dump_glyph(SPECIAL_GLYPH_NEUTRAL_SMILEY); | |
120 | dump_glyph(SPECIAL_GLYPH_SLIGHTLY_UNHAPPY_SMILEY); | |
121 | dump_glyph(SPECIAL_GLYPH_UNHAPPY_SMILEY); | |
122 | dump_glyph(SPECIAL_GLYPH_DEPRESSED_SMILEY); | |
48d70b4a | 123 | dump_glyph(SPECIAL_GLYPH_LOCK_AND_KEY); |
428d32af | 124 | dump_glyph(SPECIAL_GLYPH_TOUCH); |
bf18f4b6 LP |
125 | dump_glyph(SPECIAL_GLYPH_RECYCLING); |
126 | dump_glyph(SPECIAL_GLYPH_DOWNLOAD); | |
127 | dump_glyph(SPECIAL_GLYPH_SPARKLES); | |
e3d4148d | 128 | dump_glyph(SPECIAL_GLYPH_LOW_BATTERY); |
03c16b97 | 129 | dump_glyph(SPECIAL_GLYPH_WARNING_SIGN); |
3b516db7 LP |
130 | dump_glyph(SPECIAL_GLYPH_COMPUTER_DISK); |
131 | dump_glyph(SPECIAL_GLYPH_WORLD); | |
c80139f0 LP |
132 | dump_glyph(SPECIAL_GLYPH_RED_CIRCLE); |
133 | dump_glyph(SPECIAL_GLYPH_YELLOW_CIRCLE); | |
134 | dump_glyph(SPECIAL_GLYPH_BLUE_CIRCLE); | |
795ec90c | 135 | dump_glyph(SPECIAL_GLYPH_GREEN_CIRCLE); |
e206fcc1 ZJS |
136 | } |
137 | ||
4f7452a8 | 138 | DEFINE_TEST_MAIN(LOG_INFO); |