Beispiel #1
0
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);
}
Beispiel #2
0
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;
}