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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2023-06-23 17:24:11 -06:00
parent 9579e9a530
commit d9c72e5419
2 changed files with 28 additions and 0 deletions

View File

@@ -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',

27
src/test/test-gunicode.c Normal file
View File

@@ -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);