int icu_casemap_casemap(struct icu_casemap *casemap, struct icu_buf_utf16 *dest16, struct icu_buf_utf16 *src16, UErrorCode *status, const char *locale) { if (!casemap) return 0; return icu_utf16_casemap(dest16, src16, locale, casemap->action, status); }
static int test_icu_casemap(const char *locale, char action, const char *src8cstr, const char *chk8cstr) { int success = 0; UErrorCode status = U_ZERO_ERROR; struct icu_buf_utf8 *src8 = icu_buf_utf8_create(0); struct icu_buf_utf8 *dest8 = icu_buf_utf8_create(0); struct icu_buf_utf16 *src16 = icu_buf_utf16_create(0); struct icu_buf_utf16 *dest16 = icu_buf_utf16_create(0); int src8cstr_len = strlen(src8cstr); int chk8cstr_len = strlen(chk8cstr); /* converting to UTF16 */ icu_utf16_from_utf8_cstr(src16, src8cstr, &status); /* perform case mapping */ icu_utf16_casemap(dest16, src16, locale, action, &status); /* converting to UTF8 */ icu_utf16_to_utf8(dest8, dest16, &status); /* determine success */ if (dest8->utf8 && (dest8->utf8_len == strlen(chk8cstr)) && !strcmp(chk8cstr, (const char *) dest8->utf8)) success = 1; else success = 0; /* report failures */ if (!success) { yaz_log(YLOG_WARN, "test_icu_casemap failed"); yaz_log(YLOG_LOG, "Original string: '%s' (%d)", src8cstr, src8cstr_len); yaz_log(YLOG_LOG, "icu_casemap '%s:%c' '%s' (%d)", locale, action, dest8->utf8, dest8->utf8_len); yaz_log(YLOG_LOG, "expected string: '%s' (%d)", chk8cstr, chk8cstr_len); } /* clean the buffers */ icu_buf_utf8_destroy(src8); icu_buf_utf8_destroy(dest8); icu_buf_utf16_destroy(src16); icu_buf_utf16_destroy(dest16); return success; }