X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=test%2Ftest_record_conv.c;h=ff9a2a86a11f77c264a44457492772c3ea65077c;hb=2b1f30bfd76fe82ff850f41508ae7a71b42e6be1;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..ff9a2a8 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,13 @@ 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;";
+
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(""
""
@@ -350,7 +369,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 +382,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 +398,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 +457,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 +519,44 @@ 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);
}