]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-locale-util.c
man/systemd-sysext: list ephemeral/ephemeral-import in the list of options
[thirdparty/systemd.git] / src / test / test-locale-util.c
CommitLineData
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"
cf0fbc49 6#include "strv.h"
4f7452a8 7#include "tests.h"
2b89a960 8
4f7452a8 9TEST(get_locales) {
2b89a960 10 _cleanup_strv_free_ char **locales = NULL;
2b89a960
RC
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
4f7452a8 23TEST(locale_is_valid) {
2b89a960
RC
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
4f7452a8 36TEST(locale_is_installed) {
b45b0a69
LP
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
4f7452a8 56TEST(keymaps) {
ed457f13 57 _cleanup_strv_free_ char **kmaps = NULL;
ed457f13
TB
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
1ae9b0cf
ZJS
82#define dump_glyph(x) log_info(STRINGIFY(x) ": %s", glyph(x))
83TEST(dump_glyphs) {
84 assert_cc(GLYPH_HOME + 1 == _GLYPH_MAX);
e206fcc1 85
e206fcc1
ZJS
86 log_info("is_locale_utf8: %s", yes_no(is_locale_utf8()));
87
1ae9b0cf
ZJS
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);
e206fcc1
ZJS
138}
139
4f7452a8 140DEFINE_TEST_MAIN(LOG_INFO);