From: Phil Carmody Date: Mon, 1 Jun 2015 19:06:44 +0000 (+0300) Subject: lib: test-unichar - streamline the unichars test X-Git-Tag: 2.2.19.rc1~411 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5fea87f050d4a6a8c8a3b259a25541fc78e5f2cd;p=thirdparty%2Fdovecot%2Fcore.git lib: test-unichar - streamline the unichars test It's doing 2 kinds of tests, split them into separate test cases. And the first part has started to get expensive, so just make sure all code paths are tested by skipping most values. Only 3 from each set of 64 (lowest 6 bits) are tested. Signed-off-by: Phil Carmody --- diff --git a/src/lib/test-unichar.c b/src/lib/test-unichar.c index 563787455b..5cf1d5fb02 100644 --- a/src/lib/test-unichar.c +++ b/src/lib/test-unichar.c @@ -4,6 +4,7 @@ #include "str.h" #include "buffer.h" #include "unichar.h" +#include static void test_unichar_uni_utf8_strlen(void) { @@ -45,15 +46,24 @@ void test_unichar(void) unichar_t chr, chr2; string_t *str = t_str_new(16); - test_begin("unichars"); + test_begin("unichars encode/decode"); for (chr = 0; chr <= 0x10ffff; chr++) { + /* The bottom 6 bits should be irrelevant to code coverage, + only test 000000, 111111, and something in between. */ + if ((chr & 63) == 1) + chr += rand() % 62; /* After 0, somewhere between 1 and 62 */ + else if ((chr & 63) > 0 && (chr & 63) < 63) + chr |= 63; /* After random, straight to 63 */ + str_truncate(str, 0); uni_ucs4_to_utf8_c(chr, str); test_assert(uni_utf8_str_is_valid(str_c(str))); test_assert(uni_utf8_get_char(str_c(str), &chr2) > 0); test_assert(chr2 == chr); } + test_end(); + test_begin("unichar collation"); collate_out = buffer_create_dynamic(default_pool, 32); uni_utf8_to_decomposed_titlecase(collate_in, sizeof(collate_in), collate_out);