X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=test%2Ftsticonv.c;h=14129dbaeaba76e8d1292cd8a8dd6a26fd11d8c4;hb=49cb82c6f1a4a54272ee8ec1ec4331d59da3d190;hp=33b99449a724f48e99eb2283396269ca56b54180;hpb=d38ee71c31b49ad13164039140ed47d18e9432cb;p=yaz-moved-to-github.git diff --git a/test/tsticonv.c b/test/tsticonv.c index 33b9944..14129db 100644 --- a/test/tsticonv.c +++ b/test/tsticonv.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: tsticonv.c,v 1.29 2007-03-20 21:37:32 adam Exp $ + * $Id: tsticonv.c,v 1.35 2008-03-12 08:53:28 adam Exp $ */ #if HAVE_CONFIG_H @@ -17,6 +17,8 @@ #include #include +#define ESC "\x1b" + static int compare_buffers(char *msg, int no, int expect_len, const char *expect_buf, int got_len, const char *got_buf) @@ -121,7 +123,24 @@ static int tst_convert(yaz_iconv_t cd, const char *buf, const char *cmpbuf) && !memcmp(cmpbuf, wrbuf_buf(b), wrbuf_len(b))) ret = 1; else - yaz_log(YLOG_LOG, "GOT (%.*s)", wrbuf_len(b), wrbuf_buf(b)); + { + WRBUF w = wrbuf_alloc(); + + wrbuf_rewind(w); + wrbuf_puts_escaped(w, buf); + yaz_log(YLOG_LOG, "input %s", wrbuf_cstr(w)); + + wrbuf_rewind(w); + wrbuf_write_escaped(w, wrbuf_buf(b), wrbuf_len(b)); + yaz_log(YLOG_LOG, "got %s", wrbuf_cstr(w)); + + wrbuf_rewind(w); + wrbuf_puts_escaped(w, cmpbuf); + yaz_log(YLOG_LOG, "exp %s", wrbuf_cstr(w)); + + wrbuf_destroy(w); + } + wrbuf_destroy(b); return ret; } @@ -369,16 +388,20 @@ static void tst_marc8_to_utf8(void) if (!cd) return; + /* bug #2115 */ + YAZ_CHECK(tst_convert(cd, ESC "(N" ESC ")Qp" ESC "(B", "\xd0\x9f")); + + YAZ_CHECK(tst_convert(cd, "Cours de math", "Cours de math")); /* COMBINING ACUTE ACCENT */ YAZ_CHECK(tst_convert(cd, "Cours de mathâe", "Cours de mathe\xcc\x81")); - YAZ_CHECK(tst_convert(cd, "a\xea\x1e", "a\x1e\xcc\x8a")); YAZ_CHECK(tst_convert(cd, "a\xea", "a")); + yaz_iconv_close(cd); } @@ -458,7 +481,7 @@ static void tst_utf8_to_marc8(void) /** Pure ASCII. 12 characters (sizeof(outbuf)) */ YAZ_CHECK(tst_convert(cd, "Cours de math", "Cours de math")); - /** Pure ASCII. 13 characters (sizeof(outbuf)) */ + /** Pure ASCII. 13 characters (sizeof(outbuf)+1) */ YAZ_CHECK(tst_convert(cd, "Cours de math.", "Cours de math.")); /** UPPERCASE SCANDINAVIAN O */ @@ -487,11 +510,38 @@ static void tst_utf8_to_marc8(void) "\033$1" "\x21\x2B\x3B" "\033(B" "o" )); + /** Ideographic space per ANSI Z39.64 */ + YAZ_CHECK(tst_convert(cd, + "\xe3\x80\x80" "o", /* UTF-8 */ + "\033$1" "\x21\x23\x21" "\033(B" "o" )); + /** Superscript 0 . bug #642 */ YAZ_CHECK(tst_convert(cd, "(\xe2\x81\xb0)", /* UTF-8 */ "(\033p0\x1bs)")); + + /** bug #1778 */ + YAZ_CHECK(tst_convert(cd, + /* offset 0x530 in UTF-8 rec marccol4.u8.marc */ + "\xE3\x83\xB3" "\xE3\x82\xBF" + "\xCC\x84" "\xCC\x84" "\xE3\x83\xBC" /* UTF-8 */, + "\x1B\x24\x31" "\x69\x25\x73" + "\x1B\x28\x42" "\xE5\xE5" "\x1B\x24\x31" + "\x69\x25\x3F" + "\x69\x21\x3C" "\x1B\x28\x42")); + + + /** bug #2120 */ + YAZ_CHECK(tst_convert(cd, + "\xCE\x94\xCE\xB5\xCF\x84" + "\xCE\xBF\xCF\x81\xCE\xB1" + "\xCE\xBA\xCE\xB7\xCF\x82\x2C", + + "\x1B\x28\x53\x45\x66\x78\x72\x75" + "\x61\x6D\x6A\x77" + "\x1B\x28\x42\x2C" + )); { char *inbuf0 = "\xe2\x81\xb0";