From 2729cd06642622e1355f41f947498902e6dde61a Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Mon, 28 Jan 2013 15:29:27 +0100 Subject: [PATCH] Add test for yaz_record_conv_opac_record --- test/test_record_conv.c | 150 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 148 insertions(+), 2 deletions(-) diff --git a/test/test_record_conv.c b/test/test_record_conv.c index 35c6527..1e1d2b0 100644 --- a/test/test_record_conv.c +++ b/test/test_record_conv.c @@ -11,12 +11,18 @@ #include #include #include - +#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)); @@ -337,6 +343,141 @@ static void tst_convert2(void) yaz_record_conv_destroy(p); } +static void tst_convert3(void) +{ + NMEM nmem = nmem_create(); + int ret; + 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" + "\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"; + + 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" + " u\n" + " U\n" + " 0\n" + " 000000\n" + " s-FM/GC\n" + " Main or Science/Business Reading Rms - STORED OFFSITE\n" + " MLCM 89/00602 (N)\n" + " FT MEADE\n" + " Copy 1\n" + " \n" + " \n" + " \n" + " 1226176\n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n" + "\n"; + + Z_OPACRecord *z_opac = nmem_malloc(nmem, sizeof(*z_opac)); + Z_HoldingsAndCircData *h; + Z_CircRecord *circ; + + z_opac->bibliographicRecord = + z_ext_record_oid_nmem(nmem, yaz_oid_recsyn_usmarc, + iso2709_rec, strlen(iso2709_rec)); + z_opac->num_holdingsData = 1; + z_opac->holdingsData = (Z_HoldingsRecord **) + nmem_malloc(nmem, sizeof(Z_HoldingsRecord *) * 1); + z_opac->holdingsData[0] = (Z_HoldingsRecord *) + nmem_malloc(nmem, sizeof(Z_HoldingsRecord)); + z_opac->holdingsData[0]->which = Z_HoldingsRecord_holdingsAndCirc; + h = z_opac->holdingsData[0]->u.holdingsAndCirc = (Z_HoldingsAndCircData *) + nmem_malloc(nmem, sizeof(*h)); + h->typeOfRecord = nmem_strdup(nmem, "u"); + h->encodingLevel = nmem_strdup(nmem, "U"); + h->format = 0; + h->receiptAcqStatus = nmem_strdup(nmem, "0"); + h->generalRetention = 0; + h->completeness = 0; + h->dateOfReport = nmem_strdup(nmem, "000000"); + h->nucCode = nmem_strdup(nmem, "s-FM/GC"); + h->localLocation = nmem_strdup(nmem, + "Main or Science/Business Reading " + "Rms - STORED OFFSITE"); + h->shelvingLocation = 0; + h->callNumber = nmem_strdup(nmem, "MLCM 89/00602 (N)"); + h->shelvingData = nmem_strdup(nmem, "FT MEADE"); + h->copyNumber = nmem_strdup(nmem, "Copy 1"); + h->publicNote = 0; + h->reproductionNote = 0; + h->termsUseRepro = 0; + h->enumAndChron = 0; + h->num_volumes = 0; + h->volumes = 0; + 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->availableThru = 0; + circ->restrictions = 0; + circ->itemId = nmem_strdup(nmem, "1226176"); + circ->renewable = nmem_booldup(nmem, 0); + circ->onHold = nmem_booldup(nmem, 0); + circ->enumAndChron = 0; + circ->midspine = 0; + circ->temporaryLocation = 0; + + YAZ_CHECK(conv_configure_test("" + "" + "", + 0, &p)); + + if (p) + { + WRBUF output_record = wrbuf_alloc(); + ret = yaz_record_conv_opac_record(p, z_opac, output_record); + YAZ_CHECK(ret == 0); + if (ret == 0) + { + 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); + } + } + yaz_record_conv_destroy(p); + wrbuf_destroy(output_record); + } + nmem_destroy(nmem); +} + #endif int main(int argc, char **argv) @@ -346,9 +487,14 @@ int main(int argc, char **argv) #if YAZ_HAVE_XML2 tst_configure(); #endif -#if YAZ_HAVE_XSLT +#if YAZ_HAVE_XSLT tst_convert1(); tst_convert2(); + tst_convert3(); + xsltCleanupGlobals(); +#endif +#if YAZ_HAVE_XML2 + xmlCleanupParser(); #endif YAZ_CHECK_TERM; } -- 1.7.10.4