]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-locale-util.c
dev-setup: Follow /dev/console symlinks when locking /dev/console
[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"
2b89a960 6#include "macro.h"
cf0fbc49 7#include "strv.h"
4f7452a8 8#include "tests.h"
2b89a960 9
4f7452a8 10TEST(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 24TEST(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 37TEST(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 57TEST(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 84TEST(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 138DEFINE_TEST_MAIN(LOG_INFO);