From: Zbigniew Jędrzejewski-Szmek Date: Fri, 23 Jun 2023 23:24:11 +0000 (-0600) Subject: test-gunicode: add new test to show that unichar_iswide() is borked X-Git-Tag: v254-rc1~88^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d9c72e54190db2a0845d1558b5beb734e9f629ff;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/test/meson.build b/src/test/meson.build index b57ba235394..ab0f091756a 100644 --- a/src/test/meson.build +++ b/src/test/meson.build @@ -93,6 +93,7 @@ simple_tests += files( 'test-fstab-util.c', 'test-glob-util.c', 'test-gpt.c', + 'test-gunicode.c', 'test-hash-funcs.c', 'test-hexdecoct.c', 'test-hmac.c', diff --git a/src/test/test-gunicode.c b/src/test/test-gunicode.c new file mode 100644 index 00000000000..1836cdc04ad --- /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);