diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2023-06-24 01:24:11 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2023-06-24 01:57:30 +0200 |
commit | d9c72e54190db2a0845d1558b5beb734e9f629ff (patch) | |
tree | ac41ae6cdf6fcca79ab1f87a1c88b355831bf0e2 /src/test/test-gunicode.c | |
parent | basic/utf8: make utf8_encoded_to_unichar() return length of the codepoint (diff) | |
download | systemd-d9c72e54190db2a0845d1558b5beb734e9f629ff.tar.xz systemd-d9c72e54190db2a0845d1558b5beb734e9f629ff.zip |
test-gunicode: add new test to show that unichar_iswide() is borked
I discovered this while looking at the tests with wide characters in the next
patch. It's something to fix, but not directly relevant to the issue of
skipping ANSI in ellipsization. We will generate output that is wider than
expected in some cases, but wide characters are used very rarely so this isn't
such a big problem.
Diffstat (limited to 'src/test/test-gunicode.c')
-rw-r--r-- | src/test/test-gunicode.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/test/test-gunicode.c b/src/test/test-gunicode.c new file mode 100644 index 0000000000..1836cdc04a --- /dev/null +++ b/src/test/test-gunicode.c @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include "gunicode.h" +#include "tests.h" +#include "utf8.h" + +TEST(unichar_iswide) { + char32_t c; + int r; + + /* FIXME: the cats are wide, but we get this wrong */ + for (const char *narrow = "abX_…ąęµ!" "😼😿🙀😸😻"; *narrow; narrow += r) { + r = utf8_encoded_to_unichar(narrow, &c); + bool w = unichar_iswide(c); + assert_se(r > 0); + assert_se(!w); + } + + for (const char *wide = "🐱/¥"; *wide; wide += r) { + r = utf8_encoded_to_unichar(wide, &c); + bool w = unichar_iswide(c); + assert_se(r > 0); + assert_se(w); + } +} + +DEFINE_TEST_MAIN(LOG_INFO); |