X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=test%2Ftest_iconv.c;h=e3419722c8f933b34049340dcd8ef9065642c4c7;hp=aacea86920d48c891ef21dedf87802f37d8ce132;hb=e462d48003aafc70536f9982b44edef5d32a5f6a;hpb=5242cb5a8634bfa38b9333ff7f903e718ac6e292 diff --git a/test/test_iconv.c b/test/test_iconv.c index aacea86..e341972 100644 --- a/test/test_iconv.c +++ b/test/test_iconv.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2012 Index Data + * Copyright (C) 1995-2013 Index Data * See the file LICENSE for details. */ #if HAVE_CONFIG_H @@ -156,16 +156,6 @@ static int tst_convert(yaz_iconv_t cd, const char *buf, const char *cmpbuf) return tst_convert_x(cd, buf, cmpbuf, 0); } -/* some test strings in ISO-8859-1 format */ -static const char *iso_8859_1_a[] = { - "ax" , - "\xd8", - "eneb\346r", - "\xe5" "\xd8", - "\xe5" "\xd8" "b", - "\xe5" "\xe5", - 0 }; - static void tst_marc8_to_ucs4b(void) { yaz_iconv_t cd = yaz_iconv_open("UCS4", "MARC8"); @@ -288,6 +278,15 @@ static void tst_ucs4b_to_utf8(void) static void dconvert(int mandatory, const char *tmpcode) { + /* some test strings in ISO-8859-1 format */ + static const char *iso_8859_1_a[] = { + "ax" , + "\xd8", + "eneb\346r", + "\xe5" "\xd8", + "\xe5" "\xd8" "b", + "\xe5" "\xe5", + 0 }; int i; int ret; yaz_iconv_t cd; @@ -507,9 +506,12 @@ static void tst_utf8_to_marc8(const char *marc8_type) /** UPPERCASE SCANDINAVIAN O */ YAZ_CHECK(tst_convert(cd, "S\xc3\x98", "S\xa2")); - /** ARING */ + /** ARING (NFD) */ YAZ_CHECK(tst_convert(cd, "A" "\xCC\x8A", "\xEA" "A")); + /** ARING (NFC) */ + YAZ_CHECK(tst_convert(cd, "\xC3\x85", "\xEA" "A")); + /** A MACRON + UMLAUT, DIAERESIS */ YAZ_CHECK(tst_convert(cd, "A" "\xCC\x84" "\xCC\x88", "\xE5\xE8\x41")); @@ -699,6 +701,23 @@ static void tst_danmarc_to_latin1(void) yaz_iconv_close(cd); } +static void tst_utf8_to_danmarc(void) +{ + yaz_iconv_t cd = yaz_iconv_open("danmarc", "utf-8"); + + YAZ_CHECK(cd); + if (!cd) + return; + + YAZ_CHECK(tst_convert(cd, "ax", "ax")); + YAZ_CHECK(tst_convert(cd, "@", "@@")); + YAZ_CHECK(tst_convert(cd, "a\xc3\xa5" "b", "a\xe5" "b")); /* aring */ + YAZ_CHECK(tst_convert(cd, "a\xce\xbb" "b", "a@03BBb")); /* lambda */ + + yaz_iconv_close(cd); +} + + int main (int argc, char **argv) { @@ -720,6 +739,7 @@ int main (int argc, char **argv) tst_utf8_to_marc8("marc8lossless"); tst_danmarc_to_latin1(); + tst_utf8_to_danmarc(); tst_latin1_to_marc8();