X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibsystemd-terminal%2Ftest-term-parser.c;h=e22614d06dd2e521081297c78826f25d7b9e0a31;hp=ed16f5f2769df41e01ef49963095b2560ca39394;hb=0c13be389faea49fd8a370dc8186e7d5d20e967d;hpb=1c9633d669948155455e29b0c6e770995a8b1ca3 diff --git a/src/libsystemd-terminal/test-term-parser.c b/src/libsystemd-terminal/test-term-parser.c index ed16f5f27..e22614d06 100644 --- a/src/libsystemd-terminal/test-term-parser.c +++ b/src/libsystemd-terminal/test-term-parser.c @@ -30,42 +30,44 @@ #include "macro.h" #include "term-internal.h" #include "util.h" +#include "utf8.h" static void test_term_utf8_invalid(void) { term_utf8 p = { }; - const uint32_t *res; + uint32_t *res; size_t len; - res = term_utf8_decode(NULL, NULL, 0); - assert_se(res == NULL); + len = term_utf8_decode(NULL, NULL, 0); + assert_se(!len); - res = term_utf8_decode(&p, NULL, 0); - assert_se(res != NULL); - - len = 5; - res = term_utf8_decode(NULL, &len, 0); - assert_se(res == NULL); - assert_se(len == 0); + len = term_utf8_decode(&p, NULL, 0); + assert_se(len == 1); - len = 5; - res = term_utf8_decode(&p, &len, 0); + res = NULL; + len = term_utf8_decode(NULL, &res, 0); + assert_se(!len); assert_se(res != NULL); + assert_se(!*res); + + len = term_utf8_decode(&p, &res, 0); assert_se(len == 1); + assert_se(res != NULL); + assert_se(!*res); - len = 5; - res = term_utf8_decode(&p, &len, 0xCf); - assert_se(res == NULL); + len = term_utf8_decode(&p, &res, 0xCf); assert_se(len == 0); - - len = 5; - res = term_utf8_decode(&p, &len, 0x0); assert_se(res != NULL); + assert_se(!*res); + + len = term_utf8_decode(&p, &res, 0); assert_se(len == 2); + assert_se(res != NULL); + assert_se(res[0] == 0xCf && res[1] == 0); } static void test_term_utf8_range(void) { term_utf8 p = { }; - const uint32_t *res; + uint32_t *res; char u8[4]; uint32_t i, j; size_t ulen, len; @@ -73,13 +75,13 @@ static void test_term_utf8_range(void) { /* Convert all ucs-4 chars to utf-8 and back */ for (i = 0; i < 0x10FFFF; ++i) { - ulen = term_utf8_encode(u8, i); + ulen = utf8_encode_unichar(u8, i); if (!ulen) continue; for (j = 0; j < ulen; ++j) { - res = term_utf8_decode(&p, &len, u8[j]); - if (!res) { + len = term_utf8_decode(&p, &res, u8[j]); + if (len < 1) { assert_se(j + 1 != ulen); continue; } @@ -117,13 +119,13 @@ static void test_term_utf8_mix(void) { 0x00F0, 0x0080, 0x0080, 0x0001, }; term_utf8 p = { }; - const uint32_t *res; + uint32_t *res; unsigned int i, j; size_t len; for (i = 0, j = 0; i < sizeof(source); ++i) { - res = term_utf8_decode(&p, &len, source[i]); - if (!res) + len = term_utf8_decode(&p, &res, source[i]); + if (len < 1) continue; assert_se(j + len <= ELEMENTSOF(result));