X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=test%2Ftst_record_conv.c;h=33ede53b269829815b3e2432eca7788b6ca60ed8;hb=c5a81c4eb35bcab571d42f4e02a69e4ed76dc20b;hp=89d1f7254a58c5b141fc1b0a226668f82809a945;hpb=9dfcbb70828f8d5b524c9bb45852246ae1dd6878;p=yaz-moved-to-github.git diff --git a/test/tst_record_conv.c b/test/tst_record_conv.c index 89d1f72..33ede53 100644 --- a/test/tst_record_conv.c +++ b/test/tst_record_conv.c @@ -1,16 +1,12 @@ -/* - * Copyright (C) 2005-2006, Index Data ApS +/* This file is part of the YAZ toolkit. + * Copyright (C) 1995-2010 Index Data * See the file LICENSE for details. - * - * $Id: tst_record_conv.c,v 1.11 2006-10-04 16:59:34 mike Exp $ - * */ #include #include #include #include #include -#include #if HAVE_CONFIG_H #include @@ -52,6 +48,8 @@ yaz_record_conv_t conv_configure(const char *xmlstring, WRBUF w) } else { + + int r = yaz_record_conv_configure(p, ptr); if (r) @@ -76,73 +74,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(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("" + "", + "Element : expected or " + " element, got ", 0)); + #if YAZ_HAVE_XSLT - YAZ_CHECK(conv_configure_test("" + 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("" + YAZ_CHECK(conv_configure_test("" "" - "", + "", "xslt unsupported." " YAZ compiled without XSLT support", 0)); -#endif +#endif } static int conv_convert_test(yaz_record_conv_t p, @@ -176,24 +178,14 @@ static int conv_convert_test(yaz_record_conv_t p, { ret = 0; } - else if (strlen(output_expect_record) != wrbuf_len(output_record)) - { - int expect_len = strlen(output_expect_record); - 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); - } - else if (memcmp(output_expect_record, wrbuf_buf(output_record), - strlen(output_expect_record))) + else if (strcmp(output_expect_record, wrbuf_cstr(output_record))) { ret = 0; - printf("got-output_record = %.*s\n", - wrbuf_len(output_record), wrbuf_buf(output_record)); - printf("output_expect_record = %s\n", + printf("got-output_record len=%ld: %s\n", + (long) wrbuf_len(output_record), + wrbuf_cstr(output_record)); + printf("output_expect_record len=%ld %s\n", + (long) strlen(output_expect_record), output_expect_record); } else @@ -201,7 +193,23 @@ static int conv_convert_test(yaz_record_conv_t p, ret = 1; } } - wrbuf_free(output_record, 1); + wrbuf_destroy(output_record); + } + return ret; +} + +static int conv_convert_test_iter(yaz_record_conv_t p, + const char *input_record, + const char *output_expect_record, + int num_iter) +{ + int i; + int ret; + for (i = 0; i < num_iter; i++) + { + ret = conv_convert_test(p, input_record, output_expect_record); + if (!ret) + break; } return ret; } @@ -224,32 +232,32 @@ static void tst_convert1(void) "\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); @@ -307,16 +315,16 @@ static void tst_convert2(void) "\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("" + YAZ_CHECK(conv_configure_test("" "" - "", + "", 0, &p)); - YAZ_CHECK(conv_convert_test(p, marcxml_rec, iso2709_rec)); + YAZ_CHECK(conv_convert_test_iter(p, marcxml_rec, iso2709_rec, 100)); yaz_record_conv_destroy(p); } @@ -325,11 +333,11 @@ static void tst_convert2(void) int main(int argc, char **argv) { YAZ_CHECK_INIT(argc, argv); - libxml2_error_to_yazlog(0 /* disable log */, 0); + yaz_log_xml_errors(0, 0 /* disable log */); #if YAZ_HAVE_XML2 tst_configure(); #endif -#if YAZ_HAVE_XSLT +#if YAZ_HAVE_XSLT tst_convert1(); tst_convert2(); #endif @@ -339,6 +347,7 @@ int main(int argc, char **argv) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab