]>
Commit | Line | Data |
---|---|---|
1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ | |
2 | ||
3 | #include "glyph-util.h" | |
4 | #include "kbd-util.h" | |
5 | #include "locale-util.h" | |
6 | #include "strv.h" | |
7 | #include "tests.h" | |
8 | ||
9 | TEST(get_locales) { | |
10 | _cleanup_strv_free_ char **locales = NULL; | |
11 | int r; | |
12 | ||
13 | r = get_locales(&locales); | |
14 | assert_se(r >= 0); | |
15 | assert_se(locales); | |
16 | ||
17 | STRV_FOREACH(p, locales) { | |
18 | puts(*p); | |
19 | assert_se(locale_is_valid(*p)); | |
20 | } | |
21 | } | |
22 | ||
23 | TEST(locale_is_valid) { | |
24 | assert_se(locale_is_valid("en_EN.utf8")); | |
25 | assert_se(locale_is_valid("fr_FR.utf8")); | |
26 | assert_se(locale_is_valid("fr_FR@euro")); | |
27 | assert_se(locale_is_valid("fi_FI")); | |
28 | assert_se(locale_is_valid("POSIX")); | |
29 | assert_se(locale_is_valid("C")); | |
30 | ||
31 | assert_se(!locale_is_valid("")); | |
32 | assert_se(!locale_is_valid("/usr/bin/foo")); | |
33 | assert_se(!locale_is_valid("\x01gar\x02 bage\x03")); | |
34 | } | |
35 | ||
36 | TEST(locale_is_installed) { | |
37 | /* Always available */ | |
38 | assert_se(locale_is_installed("POSIX") > 0); | |
39 | assert_se(locale_is_installed("C") > 0); | |
40 | ||
41 | /* Might, or might not be installed. */ | |
42 | assert_se(locale_is_installed("en_EN.utf8") >= 0); | |
43 | assert_se(locale_is_installed("fr_FR.utf8") >= 0); | |
44 | assert_se(locale_is_installed("fr_FR@euro") >= 0); | |
45 | assert_se(locale_is_installed("fi_FI") >= 0); | |
46 | ||
47 | /* Definitely not valid */ | |
48 | assert_se(locale_is_installed("") == 0); | |
49 | assert_se(locale_is_installed("/usr/bin/foo") == 0); | |
50 | assert_se(locale_is_installed("\x01gar\x02 bage\x03") == 0); | |
51 | ||
52 | /* Definitely not installed */ | |
53 | assert_se(locale_is_installed("zz_ZZ") == 0); | |
54 | } | |
55 | ||
56 | TEST(keymaps) { | |
57 | _cleanup_strv_free_ char **kmaps = NULL; | |
58 | int r; | |
59 | ||
60 | assert_se(!keymap_is_valid("")); | |
61 | assert_se(!keymap_is_valid("/usr/bin/foo")); | |
62 | assert_se(!keymap_is_valid("\x01gar\x02 bage\x03")); | |
63 | ||
64 | r = get_keymaps(&kmaps); | |
65 | if (r == -ENOENT) | |
66 | return; /* skip test if no keymaps are installed */ | |
67 | ||
68 | assert_se(r >= 0); | |
69 | assert_se(kmaps); | |
70 | ||
71 | STRV_FOREACH(p, kmaps) { | |
72 | puts(*p); | |
73 | assert_se(keymap_is_valid(*p)); | |
74 | } | |
75 | ||
76 | assert_se(keymap_is_valid("uk")); | |
77 | assert_se(keymap_is_valid("de-nodeadkeys")); | |
78 | assert_se(keymap_is_valid("ANSI-dvorak")); | |
79 | assert_se(keymap_is_valid("unicode")); | |
80 | } | |
81 | ||
82 | #define dump_glyph(x) log_info(STRINGIFY(x) ": %s", glyph(x)) | |
83 | TEST(dump_glyphs) { | |
84 | assert_cc(GLYPH_HOME + 1 == _GLYPH_MAX); | |
85 | ||
86 | log_info("is_locale_utf8: %s", yes_no(is_locale_utf8())); | |
87 | ||
88 | dump_glyph(GLYPH_TREE_VERTICAL); | |
89 | dump_glyph(GLYPH_TREE_BRANCH); | |
90 | dump_glyph(GLYPH_TREE_RIGHT); | |
91 | dump_glyph(GLYPH_TREE_SPACE); | |
92 | dump_glyph(GLYPH_TREE_TOP); | |
93 | dump_glyph(GLYPH_VERTICAL_DOTTED); | |
94 | dump_glyph(GLYPH_HORIZONTAL_DOTTED); | |
95 | dump_glyph(GLYPH_HORIZONTAL_FAT); | |
96 | dump_glyph(GLYPH_TRIANGULAR_BULLET); | |
97 | dump_glyph(GLYPH_BLACK_CIRCLE); | |
98 | dump_glyph(GLYPH_WHITE_CIRCLE); | |
99 | dump_glyph(GLYPH_MULTIPLICATION_SIGN); | |
100 | dump_glyph(GLYPH_CIRCLE_ARROW); | |
101 | dump_glyph(GLYPH_BULLET); | |
102 | dump_glyph(GLYPH_MU); | |
103 | dump_glyph(GLYPH_CHECK_MARK); | |
104 | dump_glyph(GLYPH_CROSS_MARK); | |
105 | dump_glyph(GLYPH_LIGHT_SHADE); | |
106 | dump_glyph(GLYPH_DARK_SHADE); | |
107 | dump_glyph(GLYPH_FULL_BLOCK); | |
108 | dump_glyph(GLYPH_SIGMA); | |
109 | dump_glyph(GLYPH_ARROW_UP); | |
110 | dump_glyph(GLYPH_ARROW_DOWN); | |
111 | dump_glyph(GLYPH_ARROW_LEFT); | |
112 | dump_glyph(GLYPH_ARROW_RIGHT); | |
113 | dump_glyph(GLYPH_ELLIPSIS); | |
114 | dump_glyph(GLYPH_EXTERNAL_LINK); | |
115 | dump_glyph(GLYPH_ECSTATIC_SMILEY); | |
116 | dump_glyph(GLYPH_HAPPY_SMILEY); | |
117 | dump_glyph(GLYPH_SLIGHTLY_HAPPY_SMILEY); | |
118 | dump_glyph(GLYPH_NEUTRAL_SMILEY); | |
119 | dump_glyph(GLYPH_SLIGHTLY_UNHAPPY_SMILEY); | |
120 | dump_glyph(GLYPH_UNHAPPY_SMILEY); | |
121 | dump_glyph(GLYPH_DEPRESSED_SMILEY); | |
122 | dump_glyph(GLYPH_LOCK_AND_KEY); | |
123 | dump_glyph(GLYPH_TOUCH); | |
124 | dump_glyph(GLYPH_RECYCLING); | |
125 | dump_glyph(GLYPH_DOWNLOAD); | |
126 | dump_glyph(GLYPH_SPARKLES); | |
127 | dump_glyph(GLYPH_LOW_BATTERY); | |
128 | dump_glyph(GLYPH_WARNING_SIGN); | |
129 | dump_glyph(GLYPH_COMPUTER_DISK); | |
130 | dump_glyph(GLYPH_WORLD); | |
131 | dump_glyph(GLYPH_RED_CIRCLE); | |
132 | dump_glyph(GLYPH_YELLOW_CIRCLE); | |
133 | dump_glyph(GLYPH_BLUE_CIRCLE); | |
134 | dump_glyph(GLYPH_GREEN_CIRCLE); | |
135 | dump_glyph(GLYPH_SUPERHERO); | |
136 | dump_glyph(GLYPH_IDCARD); | |
137 | dump_glyph(GLYPH_HOME); | |
138 | } | |
139 | ||
140 | DEFINE_TEST_MAIN(LOG_INFO); |