mirror of
https://github.com/morgan9e/systemd
synced 2026-04-15 00:47:10 +09:00
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:
@@ -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
27
src/test/test-gunicode.c
Normal 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);
|
||||
Reference in New Issue
Block a user