X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=test%2Fapi%2Ftestlib.c;h=2be29208c543d1105893f40b88c6835d0e7abc55;hb=3731bdaf94aeba2550fc553aebe34831c203dc36;hp=583a2c40275a0d621d45df0e307ff848e3419a0b;hpb=e84a2f16cabdb0e4e212f9aa2f83eeaefa28c808;p=idzebra-moved-to-github.git diff --git a/test/api/testlib.c b/test/api/testlib.c index 583a2c4..2be2920 100644 --- a/test/api/testlib.c +++ b/test/api/testlib.c @@ -1,4 +1,4 @@ -/* $Id: testlib.c,v 1.45 2007-04-18 11:37:39 adam Exp $ +/* $Id: testlib.c,v 1.47 2007-11-30 12:19:09 adam Exp $ Copyright (C) 1995-2007 Index Data ApS @@ -450,8 +450,60 @@ void tl_check_filter(ZebraService zs, const char *name) } } +ZEBRA_RES tl_fetch(ZebraHandle zh, int position, const char *element_set, + const Odr_oid * format, ODR odr, + const char **rec_buf, size_t *rec_len) +{ + ZebraRetrievalRecord retrievalRecord[1]; + Z_RecordComposition *comp; + ZEBRA_RES res; + retrievalRecord[0].position = position; + + yaz_set_esn(&comp, element_set, odr->mem); + + res = zebra_records_retrieve(zh, odr, "rsetname", 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; +} +ZEBRA_RES tl_fetch_compare(ZebraHandle zh, + int position, const char *element_set, + const Odr_oid *format, const char *cmp_rec) +{ + const char *rec_buf = 0; + size_t rec_len = 0; + ODR odr = odr_createmem(ODR_ENCODE); + ZEBRA_RES res = tl_fetch(zh, position, 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; +} + +ZEBRA_RES tl_fetch_first_compare(ZebraHandle zh, + const char *element_set, + const Odr_oid *format, const char *cmp_rec) +{ + return tl_fetch_compare(zh, 1, element_set, format, cmp_rec); +} /* * Local variables: