X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=test%2Ftest_record_conv.c;h=fa65224a52801a4849eb49b37b7708acb3be1e5f;hb=f332be40c2edee783d37633597b4f7ac3b22fc3e;hp=1e1d2b0992396a8b2a60c09d3b497e6b84b6b5af;hpb=2729cd06642622e1355f41f947498902e6dde61a;p=yaz-moved-to-github.git
diff --git a/test/test_record_conv.c b/test/test_record_conv.c
index 1e1d2b0..fa65224 100644
--- a/test/test_record_conv.c
+++ b/test/test_record_conv.c
@@ -1,5 +1,5 @@
/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2013 Index Data
+ * Copyright (C) Index Data
* See the file LICENSE for details.
*/
#if HAVE_CONFIG_H
@@ -246,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, solrmarc_rec, marcxml_rec));
+ yaz_record_conv_destroy(p);
YAZ_CHECK(conv_configure_test(""
""
@@ -310,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(""
+ "",
+ 0, &p));
+ YAZ_CHECK(conv_convert_test(p, raw_rec, marcxml_rec));
+ yaz_record_conv_destroy(p);
}
static void tst_convert2(void)
@@ -350,7 +384,7 @@ static void tst_convert3(void)
yaz_record_conv_t p = 0;
const char *iso2709_rec =
- "\x30\x30\x30\x37\x37\x6E\x61\x6D\x20\x61\x32\x32\x30\x30\x30\x34"
+ "\x30\x30\x30\x37\x37\x6E\x61\x6D\x20\x20\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"
@@ -363,7 +397,7 @@ static void tst_convert3(void)
" 00077nam a22000498a 4500\n"
" 11224466 \n"
" \n"
- " k" "\xc3" "\xb8" /* oslash in UTF_8 */
+ " k" "\xc3" "\xb8" /* oslash in UTF_8 */
"benhavn\n"
" \n"
"\n"
@@ -379,9 +413,22 @@ static void tst_convert3(void)
" MLCM 89/00602 (N)\n"
" FT MEADE\n"
" Copy 1\n"
+ " \n"
+ " \n"
+ " 1\n"
+ " 2\n"
+ " 3\n"
+ " \n"
+ " \n"
+ " 1\n"
+ " 2\n"
+ " 3\n"
+ " \n"
+ " \n"
" \n"
" \n"
" \n"
+ " 20130129\n"
" 1226176\n"
" \n"
" \n"
@@ -425,15 +472,27 @@ static void tst_convert3(void)
h->reproductionNote = 0;
h->termsUseRepro = 0;
h->enumAndChron = 0;
- h->num_volumes = 0;
+ h->num_volumes = 2;
h->volumes = 0;
+
+ h->volumes = (Z_Volume **)
+ nmem_malloc(nmem, 2 * sizeof(Z_Volume *));
+
+ h->volumes[0] = (Z_Volume *)
+ nmem_malloc(nmem, sizeof(Z_Volume));
+ h->volumes[1] = h->volumes[0];
+
+ h->volumes[0]->enumeration = nmem_strdup(nmem, "1");
+ h->volumes[0]->chronology = nmem_strdup(nmem, "2");
+ h->volumes[0]->enumAndChron = nmem_strdup(nmem, "3");
+
h->num_circulationData = 1;
h->circulationData = (Z_CircRecord **)
nmem_malloc(nmem, 1 * sizeof(Z_CircRecord *));
circ = h->circulationData[0] = (Z_CircRecord *)
nmem_malloc(nmem, sizeof(Z_CircRecord));
circ->availableNow = nmem_booldup(nmem, 1);
- circ->availablityDate = 0;
+ circ->availablityDate = nmem_strdup(nmem, "20130129");
circ->availableThru = 0;
circ->restrictions = 0;
circ->itemId = nmem_strdup(nmem, "1226176");
@@ -475,6 +534,81 @@ static void tst_convert3(void)
yaz_record_conv_destroy(p);
wrbuf_destroy(output_record);
}
+ {
+ Z_OPACRecord *opac = 0;
+ yaz_marc_t mt = yaz_marc_create();
+ ret = yaz_xml_to_opac(mt, opacxml_rec, strlen(opacxml_rec),
+ &opac, 0 /* iconv */, nmem, 0);
+ YAZ_CHECK(ret);
+ YAZ_CHECK(opac);
+
+ if (opac)
+ {
+ WRBUF output_record = wrbuf_alloc();
+ char *p;
+
+ yaz_marc_xml(mt, YAZ_MARC_MARCXML);
+ yaz_opac_decode_wrbuf(mt, opac, output_record);
+
+ /* change MARC size to 00077 from 00078, due to
+ encoding of the aring (two bytes in UTF-8) */
+ p = strstr(wrbuf_buf(output_record), "00078");
+ YAZ_CHECK(p);
+ if (p)
+ p[4] = '7';
+
+ ret = strcmp(wrbuf_cstr(output_record), opacxml_rec);
+ YAZ_CHECK(ret == 0);
+ if (ret)
+ {
+ 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(opacxml_rec),
+ opacxml_rec);
+ }
+ wrbuf_destroy(output_record);
+ }
+ yaz_marc_destroy(mt);
+ }
+ nmem_destroy(nmem);
+}
+
+static void tst_convert4(void)
+{
+ NMEM nmem = nmem_create();
+ int ret;
+
+ const char *opacxml_rec =
+ "\n"
+ " \n"
+ "\n"
+ " 00077nam a22000498a 4500\n"
+ " 11224466 \n"
+ " \n"
+ " k" "\xc3" "\xb8" /* oslash in UTF_8 */
+ "benhavn\n"
+ " \n"
+ "\n"
+ " \n"
+ " \n"
+ " \n"
+ " Sprague Library hidden basement\n"
+ " E98.L7L44 1976 \n"
+ " \n"
+ " \n"
+ " \n"
+ " \n"
+ ;
+
+ Z_OPACRecord *opac = 0;
+ yaz_marc_t mt = yaz_marc_create();
+ ret = yaz_xml_to_opac(mt, opacxml_rec, strlen(opacxml_rec),
+ &opac, 0 /* iconv */, nmem, 0);
+ YAZ_CHECK(ret);
+ YAZ_CHECK(opac);
+ yaz_marc_destroy(mt);
nmem_destroy(nmem);
}
@@ -491,6 +625,7 @@ int main(int argc, char **argv)
tst_convert1();
tst_convert2();
tst_convert3();
+ tst_convert4();
xsltCleanupGlobals();
#endif
#if YAZ_HAVE_XML2