X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=test%2Ftest_record_conv.c;h=a00ac9e67705abde9c2da197d72bb7c14f8dce82;hp=1e1d2b0992396a8b2a60c09d3b497e6b84b6b5af;hb=22c19c698f72ce5328ea6d5d685c019be92d24d3;hpb=2729cd06642622e1355f41f947498902e6dde61a diff --git a/test/test_record_conv.c b/test/test_record_conv.c index 1e1d2b0..a00ac9e 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 @@ -363,7 +363,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 +379,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 +438,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 +500,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); }