1
/* Copyright (c) 2007-2013 Dovecot authors, see the included COPYING file */
8
void test_unichar(void)
10
static const char overlong_utf8[] = "\xf8\x80\x95\x81\xa1";
11
static const char collate_in[] = "\xc3\xbc \xc2\xb3";
12
static const char collate_exp[] = "U\xcc\x88 3";
13
buffer_t *collate_out;
15
string_t *str = t_str_new(16);
17
test_begin("unichars");
18
for (chr = 0; chr <= 0x10ffff; chr++) {
20
uni_ucs4_to_utf8_c(chr, str);
21
test_assert(uni_utf8_str_is_valid(str_c(str)));
22
test_assert(uni_utf8_get_char(str_c(str), &chr2) > 0);
23
test_assert(chr2 == chr);
26
collate_out = buffer_create_dynamic(default_pool, 32);
27
uni_utf8_to_decomposed_titlecase(collate_in, sizeof(collate_in),
29
test_assert(!strcmp(collate_out->data, collate_exp));
30
buffer_free(&collate_out);
32
test_assert(!uni_utf8_str_is_valid(overlong_utf8));
33
test_assert(uni_utf8_get_char(overlong_utf8, &chr2) < 0);