From: Adam Dickmeiss Date: Thu, 16 Nov 2006 12:48:28 +0000 (+0000) Subject: Added new test for check for zebra:: element set names. X-Git-Tag: ZEBRA.2.0.6~42 X-Git-Url: http://jsfdemo.indexdata.com/cgi-bin?a=commitdiff_plain;h=724e70cf7629655ad7ef628f1b42ced08cc372f1;p=idzebra-moved-to-github.git Added new test for check for zebra:: element set names. --- diff --git a/test/api/Makefile.am b/test/api/Makefile.am index c641b5f..3c5f376 100644 --- a/test/api/Makefile.am +++ b/test/api/Makefile.am @@ -1,9 +1,9 @@ -# $Id: Makefile.am,v 1.39 2006-10-23 09:31:48 adam Exp $ +# $Id: Makefile.am,v 1.40 2006-11-16 12:48:28 adam Exp $ noinst_PROGRAMS = testclient testclient_SOURCES = testclient.c -simpletests = t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 +simpletests = t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16 safaritests = safari1 check_PROGRAMS = $(simpletests) $(safaritests) TESTS = $(check_PROGRAMS) @@ -31,6 +31,7 @@ t12_SOURCES = t12.c t13_SOURCES = t13.c t14_SOURCES = t14.c t15_SOURCES = t15.c +t16_SOURCES = t16.c safari1_SOURCES = safari1.c testlib.c diff --git a/test/api/t16.c b/test/api/t16.c new file mode 100644 index 0000000..cf8dd17 --- /dev/null +++ b/test/api/t16.c @@ -0,0 +1,116 @@ +/* $Id: t16.c,v 1.1 2006-11-16 12:48:28 adam Exp $ + Copyright (C) 1995-2006 + Index Data ApS + +This file is part of the Zebra server. + +Zebra is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Zebra is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +/** \brief test special element set names zebra:: and friends */ + +#include "testlib.h" + +const char *myrec[] = { + "\n" + " My title\n" + "\n", + 0}; + +#define NUMBER_TO_FETCH_MAX 1000 + +static ZEBRA_RES fetch_first(ZebraHandle zh, const char *element_set, + oid_value format, ODR odr, + const char **rec_buf, size_t *rec_len) +{ + ZebraRetrievalRecord retrievalRecord[1]; + Z_RecordComposition *comp; + ZEBRA_RES res; + + retrievalRecord[0].position = 1; /* get from this position */ + + yaz_set_esn(&comp, element_set, odr->mem); + + res = zebra_records_retrieve(zh, odr, "default", comp, format, 1, + retrievalRecord); + if (res != ZEBRA_OK) + { + int code = zebra_errCode(zh); + yaz_log(YLOG_FATAL, "zebra_records_retrieve returned error %d", + code); + } + else + { + *rec_buf = retrievalRecord[0].buf; + *rec_len = retrievalRecord[0].len; + } + return res; +} + +static ZEBRA_RES fetch_first_compare(ZebraHandle zh, const char *element_set, + oid_value format, const char *cmp_rec) +{ + const char *rec_buf; + size_t rec_len; + ODR odr = odr_createmem(ODR_ENCODE); + ZEBRA_RES res = fetch_first(zh, element_set, format, odr, + &rec_buf, &rec_len); + if (res == ZEBRA_OK) + { + if (strlen(cmp_rec) != rec_len) + res = ZEBRA_FAIL; + else if (memcmp(cmp_rec, rec_buf, rec_len)) + res = ZEBRA_FAIL; + } + odr_destroy(odr); + return res; +} + + + +static void tst(int argc, char **argv) +{ + zint hits; + ZEBRA_RES res; + + ZebraService zs = tl_start_up(0, argc, argv); + ZebraHandle zh = zebra_open(zs, 0); + + YAZ_CHECK(tl_init_data(zh, myrec)); + + res = zebra_search_PQF(zh, "@attr 1=4 my", "default", &hits); + YAZ_CHECK_EQ(res, ZEBRA_OK); + YAZ_CHECK_EQ(hits, 1); + + YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", VAL_TEXT_XML, + myrec[0]), ZEBRA_OK); + + YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", VAL_TEXT_XML, + "mismatch"), ZEBRA_FAIL); + + YAZ_CHECK(tl_close_down(zh, zs)); +} + +TL_MAIN + +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +