X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=test%2Ftest_record_conv.c;h=fa65224a52801a4849eb49b37b7708acb3be1e5f;hp=dff7f688f75e11255ae20bf1e48e799601dfab77;hb=527dee673a04d80bd3002e4d7db7e754bb3b2eca;hpb=3107ce3a34993d2f784387f227a50343fff83bbc diff --git a/test/test_record_conv.c b/test/test_record_conv.c index dff7f68..fa65224 100644 --- a/test/test_record_conv.c +++ b/test/test_record_conv.c @@ -1,22 +1,28 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2010 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ +#if HAVE_CONFIG_H +#include +#endif + #include #include #include #include #include - -#if HAVE_CONFIG_H -#include -#endif - +#include +#include +#include #if YAZ_HAVE_XML2 #include #include +#if YAZ_HAVE_XSLT +#include +#endif + yaz_record_conv_t conv_configure(const char *xmlstring, WRBUF w) { xmlDocPtr doc = xmlParseMemory(xmlstring, strlen(xmlstring)); @@ -51,7 +57,7 @@ yaz_record_conv_t conv_configure(const char *xmlstring, WRBUF w) int r = yaz_record_conv_configure(p, ptr); - + if (r) { wrbuf_puts(w, yaz_record_conv_get_error(p)); @@ -61,7 +67,7 @@ yaz_record_conv_t conv_configure(const char *xmlstring, WRBUF w) } xmlFreeDoc(doc); return p; - } + } } int conv_configure_test(const char *xmlstring, const char *expect_error, @@ -144,7 +150,7 @@ static void tst_configure(void) "", "xslt unsupported." " YAZ compiled without XSLT support", 0)); -#endif +#endif } static int conv_convert_test(yaz_record_conv_t p, @@ -181,7 +187,7 @@ static int conv_convert_test(yaz_record_conv_t p, else if (strcmp(output_expect_record, wrbuf_cstr(output_record))) { ret = 0; - printf("got-output_record len=%ld: %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", @@ -225,6 +231,14 @@ static void tst_convert1(void) " 11224466 \n" " \n" "\n"; + const char *tmarcxml_rec = + "\n" + " 00080nam a22000498a 4500\n" + " 11224466 \n" + " \n" + " 11224466 \n" + " \n" + "\n"; const char *iso2709_rec = "\x30\x30\x30\x38\x30\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" @@ -232,6 +246,21 @@ 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"; + const char *solrmarc_rec = + "\x30\x30\x30\x38\x30\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\x37\x30\x30\x30\x31\x33" + "#30;\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x36\x20#30;\x20\x20" + "#31;\x61\x20\x20\x20\x31\x31\x32\x32\x34\x34\x36\x36\x20#30;#29;"; + const char *raw_rec = /* raw is xml-string of marcxml_rec */ + "<record xmlns=\"http://www.loc.gov/MARC21/slim\">\n" + " <leader>00080nam a22000498a 4500</leader>\n" + " <controlfield tag=\"001\"> 11224466 </controlfield>\n" + " <datafield tag=\"010\" ind1=\" \" ind2=\" \">\n" + " <subfield code=\"a\"> 11224466 </subfield>\n" + " </datafield>\n" + "</record>\n\n"; + YAZ_CHECK(conv_configure_test("" "", 0, &p)); YAZ_CHECK(conv_convert_test(p, marcxml_rec, iso2709_rec)); + YAZ_CHECK(conv_convert_test(p, tmarcxml_rec, iso2709_rec)); yaz_record_conv_destroy(p); YAZ_CHECK(conv_configure_test("" @@ -256,6 +286,18 @@ static void tst_convert1(void) YAZ_CHECK(conv_convert_test(p, iso2709_rec, marcxml_rec)); yaz_record_conv_destroy(p); + YAZ_CHECK(conv_configure_test("" + "" + "" + "", + 0, &p)); + YAZ_CHECK(conv_convert_test(p, solrmarc_rec, marcxml_rec)); + yaz_record_conv_destroy(p); YAZ_CHECK(conv_configure_test("" "" @@ -295,6 +337,13 @@ static void tst_convert1(void) 0, &p)); YAZ_CHECK(conv_convert_test(p, marcxml_rec, marcxml_rec)); yaz_record_conv_destroy(p); + + YAZ_CHECK(conv_configure_test("" + "