X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=test%2Ftst_record_conv.c;h=6683b84e779c8274c5465d374b451544822aafc0;hp=c4f09c40f391d9847ef7aae0d738e3be5995d96a;hb=401da56d4a26f687cd42024bdef6f29a29bb7663;hpb=27481680fb1a69456e789e5bc8e1ec914337287d diff --git a/test/tst_record_conv.c b/test/tst_record_conv.c index c4f09c4..6683b84 100644 --- a/test/tst_record_conv.c +++ b/test/tst_record_conv.c @@ -1,8 +1,8 @@ /* - * Copyright (C) 2005-2006, Index Data ApS + * Copyright (C) 2005-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: tst_record_conv.c,v 1.7 2006-05-07 17:45:41 adam Exp $ + * $Id: tst_record_conv.c,v 1.14 2007-03-19 14:40:07 adam Exp $ * */ #include @@ -16,7 +16,7 @@ #include #endif -#if HAVE_XSLT +#if YAZ_HAVE_XML2 #include #include @@ -52,6 +52,8 @@ yaz_record_conv_t conv_configure(const char *xmlstring, WRBUF w) } else { + + int r = yaz_record_conv_configure(p, ptr); if (r) @@ -76,65 +78,77 @@ int conv_configure_test(const char *xmlstring, const char *expect_error, if (!p) { - if (expect_error && !strcmp(wrbuf_buf(w), expect_error)) + if (expect_error && !strcmp(wrbuf_cstr(w), expect_error)) ret = 1; else { ret = 0; - printf("%.*s\n", wrbuf_len(w), wrbuf_buf(w)); + printf("%s\n", wrbuf_cstr(w)); } } else { if (expect_error) - { ret = 0; - yaz_record_conv_destroy(p); - } else - { ret = 1; - } } + if (pt) *pt = p; else - yaz_record_conv_destroy(p); + if (p) + yaz_record_conv_destroy(p); - wrbuf_free(w, 1); + wrbuf_destroy(w); return ret; } -static void tst_configure() +static void tst_configure(void) { + + + YAZ_CHECK(conv_configure_test("", "Missing 'convert' element", 0)); - YAZ_CHECK(conv_configure_test("", 0, 0)); - YAZ_CHECK(conv_configure_test("", - "Bad element 'bad'." - "Expected marc, xslt, ..", 0)); - YAZ_CHECK(conv_configure_test("" + + + YAZ_CHECK(conv_configure_test("" + "", + "Element : expected or " + " element, got ", 0)); + +#if YAZ_HAVE_XSLT + YAZ_CHECK(conv_configure_test("" "" "" - "", - "Attribute 'inputformat' required", 0)); - YAZ_CHECK(conv_configure_test("" + "", + "Element : attribute 'inputformat' " + "required", 0)); + YAZ_CHECK(conv_configure_test("" "" - "", - "Missing attribute 'stylesheet'", 0)); - YAZ_CHECK(conv_configure_test("" - "" + "", + "Element : attribute 'stylesheet' " + "expected", 0)); + YAZ_CHECK(conv_configure_test("" "" - "", + "" + "", 0, 0)); +#else + YAZ_CHECK(conv_configure_test("" + "" + "", + "xslt unsupported." + " YAZ compiled without XSLT support", 0)); +#endif } static int conv_convert_test(yaz_record_conv_t p, @@ -174,31 +188,27 @@ static int conv_convert_test(yaz_record_conv_t p, ret = 0; printf("output_record expect-len=%d got-len=%d\n", expect_len, wrbuf_len(output_record)); - printf("got-output_record = %.*s\n", - wrbuf_len(output_record), wrbuf_buf(output_record)); - printf("output_expect_record = %s\n", - output_expect_record); + printf("got-output_record = %s\n", wrbuf_cstr(output_record)); + printf("output_expect_record = %s\n", output_expect_record); } else if (memcmp(output_expect_record, wrbuf_buf(output_record), strlen(output_expect_record))) { ret = 0; - printf("got-output_record = %.*s\n", - wrbuf_len(output_record), wrbuf_buf(output_record)); - printf("output_expect_record = %s\n", - output_expect_record); + printf("got-output_record = %s\n", wrbuf_cstr(output_record)); + printf("output_expect_record = %s\n", output_expect_record); } else { ret = 1; } } - wrbuf_free(output_record, 1); + wrbuf_destroy(output_record); } return ret; } -static void tst_convert() +static void tst_convert1(void) { yaz_record_conv_t p = 0; const char *marcxml_rec = @@ -216,32 +226,32 @@ static void tst_convert() "\x1E\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x36\x20\x1E\x20\x20" "\x1F\x61\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x36\x20\x1E\x1D"; - YAZ_CHECK(conv_configure_test("" + YAZ_CHECK(conv_configure_test("" "" - "", + "", 0, &p)); YAZ_CHECK(conv_convert_test(p, marcxml_rec, iso2709_rec)); yaz_record_conv_destroy(p); - YAZ_CHECK(conv_configure_test("" + YAZ_CHECK(conv_configure_test("" "" - "", + "", 0, &p)); YAZ_CHECK(conv_convert_test(p, iso2709_rec, marcxml_rec)); yaz_record_conv_destroy(p); - YAZ_CHECK(conv_configure_test("" + YAZ_CHECK(conv_configure_test("" "" "" "" - "", + "", 0, &p)); YAZ_CHECK(conv_convert_test(p, marcxml_rec, marcxml_rec)); yaz_record_conv_destroy(p); - YAZ_CHECK(conv_configure_test("" + YAZ_CHECK(conv_configure_test("" "" "" "" - "", + "", 0, &p)); YAZ_CHECK(conv_convert_test(p, marcxml_rec, marcxml_rec)); yaz_record_conv_destroy(p); } +static void tst_convert2(void) +{ + yaz_record_conv_t p = 0; + const char *marcxml_rec = + "\n" + " 00080nam a22000498a 4500\n" + " 11224466 \n" + " \n" + " københavn\n" + " \n" + "\n"; + const char *iso2709_rec = + "\x30\x30\x30\x37\x37\x6E\x61\x6D\x20\x61\x32\x32\x30\x30\x30\x34" + "\x39\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30" + "\x30\x30\x30\x30\x30\x31\x30\x30\x30\x31\x34\x30\x30\x30\x31\x33" + "\x1E\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x36\x20\x1E\x20\x20" + "\x1F\x61\x6b\xb2\x62\x65\x6e\x68\x61\x76\x6e\x1E\x1D"; + + YAZ_CHECK(conv_configure_test("" + "" + "", + 0, &p)); + YAZ_CHECK(conv_convert_test(p, marcxml_rec, iso2709_rec)); + yaz_record_conv_destroy(p); +} + #endif int main(int argc, char **argv) { YAZ_CHECK_INIT(argc, argv); libxml2_error_to_yazlog(0 /* disable log */, 0); -#if HAVE_XSLT +#if YAZ_HAVE_XML2 tst_configure(); - tst_convert(); +#endif +#if YAZ_HAVE_XSLT + tst_convert1(); + tst_convert2(); #endif YAZ_CHECK_TERM; }