]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/test/test-locale-util.c
tests: reflect that we can now handle devices with very long sysfs paths
[thirdparty/systemd.git] / src / test / test-locale-util.c
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 "macro.h"
7 #include "strv.h"
8 #include "tests.h"
9 #include "util.h"
10
11 TEST(get_locales) {
12 _cleanup_strv_free_ char **locales = NULL;
13 int r;
14
15 r = get_locales(&locales);
16 assert_se(r >= 0);
17 assert_se(locales);
18
19 STRV_FOREACH(p, locales) {
20 puts(*p);
21 assert_se(locale_is_valid(*p));
22 }
23 }
24
25 TEST(locale_is_valid) {
26 assert_se(locale_is_valid("en_EN.utf8"));
27 assert_se(locale_is_valid("fr_FR.utf8"));
28 assert_se(locale_is_valid("fr_FR@euro"));
29 assert_se(locale_is_valid("fi_FI"));
30 assert_se(locale_is_valid("POSIX"));
31 assert_se(locale_is_valid("C"));
32
33 assert_se(!locale_is_valid(""));
34 assert_se(!locale_is_valid("/usr/bin/foo"));
35 assert_se(!locale_is_valid("\x01gar\x02 bage\x03"));
36 }
37
38 TEST(locale_is_installed) {
39 /* Always available */
40 assert_se(locale_is_installed("POSIX") > 0);
41 assert_se(locale_is_installed("C") > 0);
42
43 /* Might, or might not be installed. */
44 assert_se(locale_is_installed("en_EN.utf8") >= 0);
45 assert_se(locale_is_installed("fr_FR.utf8") >= 0);
46 assert_se(locale_is_installed("fr_FR@euro") >= 0);
47 assert_se(locale_is_installed("fi_FI") >= 0);
48
49 /* Definitely not valid */
50 assert_se(locale_is_installed("") == 0);
51 assert_se(locale_is_installed("/usr/bin/foo") == 0);
52 assert_se(locale_is_installed("\x01gar\x02 bage\x03") == 0);
53
54 /* Definitely not installed */
55 assert_se(locale_is_installed("zz_ZZ") == 0);
56 }
57
58 TEST(keymaps) {
59 _cleanup_strv_free_ char **kmaps = NULL;
60 int r;
61
62 assert_se(!keymap_is_valid(""));
63 assert_se(!keymap_is_valid("/usr/bin/foo"));
64 assert_se(!keymap_is_valid("\x01gar\x02 bage\x03"));
65
66 r = get_keymaps(&kmaps);
67 if (r == -ENOENT)
68 return; /* skip test if no keymaps are installed */
69
70 assert_se(r >= 0);
71 assert_se(kmaps);
72
73 STRV_FOREACH(p, kmaps) {
74 puts(*p);
75 assert_se(keymap_is_valid(*p));
76 }
77
78 assert_se(keymap_is_valid("uk"));
79 assert_se(keymap_is_valid("de-nodeadkeys"));
80 assert_se(keymap_is_valid("ANSI-dvorak"));
81 assert_se(keymap_is_valid("unicode"));
82 }
83
84 #define dump_glyph(x) log_info(STRINGIFY(x) ": %s", special_glyph(x))
85 TEST(dump_special_glyphs) {
86 assert_cc(SPECIAL_GLYPH_SPARKLES + 1 == _SPECIAL_GLYPH_MAX);
87
88 log_info("is_locale_utf8: %s", yes_no(is_locale_utf8()));
89
90 dump_glyph(SPECIAL_GLYPH_TREE_VERTICAL);
91 dump_glyph(SPECIAL_GLYPH_TREE_BRANCH);
92 dump_glyph(SPECIAL_GLYPH_TREE_RIGHT);
93 dump_glyph(SPECIAL_GLYPH_TREE_SPACE);
94 dump_glyph(SPECIAL_GLYPH_TREE_TOP);
95 dump_glyph(SPECIAL_GLYPH_TRIANGULAR_BULLET);
96 dump_glyph(SPECIAL_GLYPH_BLACK_CIRCLE);
97 dump_glyph(SPECIAL_GLYPH_WHITE_CIRCLE);
98 dump_glyph(SPECIAL_GLYPH_MULTIPLICATION_SIGN);
99 dump_glyph(SPECIAL_GLYPH_CIRCLE_ARROW);
100 dump_glyph(SPECIAL_GLYPH_BULLET);
101 dump_glyph(SPECIAL_GLYPH_ARROW_RIGHT);
102 dump_glyph(SPECIAL_GLYPH_ARROW_UP);
103 dump_glyph(SPECIAL_GLYPH_ARROW_DOWN);
104 dump_glyph(SPECIAL_GLYPH_ELLIPSIS);
105 dump_glyph(SPECIAL_GLYPH_MU);
106 dump_glyph(SPECIAL_GLYPH_CHECK_MARK);
107 dump_glyph(SPECIAL_GLYPH_CROSS_MARK);
108 dump_glyph(SPECIAL_GLYPH_EXTERNAL_LINK);
109 dump_glyph(SPECIAL_GLYPH_ECSTATIC_SMILEY);
110 dump_glyph(SPECIAL_GLYPH_HAPPY_SMILEY);
111 dump_glyph(SPECIAL_GLYPH_SLIGHTLY_HAPPY_SMILEY);
112 dump_glyph(SPECIAL_GLYPH_NEUTRAL_SMILEY);
113 dump_glyph(SPECIAL_GLYPH_SLIGHTLY_UNHAPPY_SMILEY);
114 dump_glyph(SPECIAL_GLYPH_UNHAPPY_SMILEY);
115 dump_glyph(SPECIAL_GLYPH_DEPRESSED_SMILEY);
116 dump_glyph(SPECIAL_GLYPH_LOCK_AND_KEY);
117 dump_glyph(SPECIAL_GLYPH_TOUCH);
118 dump_glyph(SPECIAL_GLYPH_RECYCLING);
119 dump_glyph(SPECIAL_GLYPH_DOWNLOAD);
120 dump_glyph(SPECIAL_GLYPH_SPARKLES);
121 }
122
123 DEFINE_TEST_MAIN(LOG_INFO);