From d648cf738190682df2314f3fc3ef5a9e0396724c Mon Sep 17 00:00:00 2001 From: Heikki Levanto Date: Wed, 22 Sep 2004 11:59:25 +0000 Subject: [PATCH] Added a test for sorting --- test/api/Makefile.am | 5 ++- test/api/t7.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 test/api/t7.c diff --git a/test/api/Makefile.am b/test/api/Makefile.am index e6b398b..10fe8d9 100644 --- a/test/api/Makefile.am +++ b/test/api/Makefile.am @@ -1,9 +1,9 @@ -# $Id: Makefile.am,v 1.15 2004-08-30 21:36:53 adam Exp $ +# $Id: Makefile.am,v 1.16 2004-09-22 11:59:25 heikki Exp $ noinst_PROGRAMS = testclient testclient_SOURCES = testclient.c -check_PROGRAMS = t1 t2 t3 t4 t5 t6 +check_PROGRAMS = t1 t2 t3 t4 t5 t6 t7 TESTS = $(check_PROGRAMS) EXTRA_DIST=zebra.cfg zebra6.cfg @@ -14,6 +14,7 @@ t3_SOURCES = t3.c t4_SOURCES = t4.c t5_SOURCES = t5.c t6_SOURCES = t6.c +t7_SOURCES = t7.c AM_CPPFLAGS = -I$(top_srcdir)/include $(YAZINC) diff --git a/test/api/t7.c b/test/api/t7.c new file mode 100644 index 0000000..d59cc79 --- /dev/null +++ b/test/api/t7.c @@ -0,0 +1,99 @@ +/* $Id: t7.c,v 1.1 2004-09-22 11:59:25 heikki Exp $ + Copyright (C) 2004 + 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 Zebra; see the file LICENSE.zebra. If not, write to the +Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +*/ + +#include +#include +#include +#include + +/* read zebra.cfg from env var srcdir if it exists; otherwise current dir */ +static ZebraService start_service() +{ + char cfg[256]; + char *srcdir = getenv("srcdir"); + sprintf(cfg, "%.200s%szebra.cfg", srcdir ? srcdir : "", srcdir ? "/" : ""); + return zebra_start(cfg); +} + +int main(int argc, char **argv) +{ + int i; + ZebraService zs; + ZebraHandle zh; + const char *myrec = + "\n" + " My title\n" + "\n"; + const char *setname1="set1"; + const char *setname2="set2"; + const char *setname3="set3"; + int status; + int rc; + ODR odr_input = odr_createmem (ODR_DECODE); + ODR odr_output = odr_createmem (ODR_ENCODE); + YAZ_PQF_Parser parser = yaz_pqf_create(); + Z_RPNQuery *query = yaz_pqf_parse(parser, odr_input, + "@attr 1=4 my"); + Z_SortKeySpecList *spec = + yaz_sort_spec (odr_output, "@attr 1=4 id"); + int hits; + + yaz_log_init_file("t7.log"); + + nmem_init (); + + zs = start_service(); + zh = zebra_open (zs); + zebra_select_database(zh, "Default"); + zebra_init(zh); + + zebra_begin_trans (zh, 1); + zebra_add_record (zh, myrec, strlen(myrec)); + zebra_end_trans (zh); + + zebra_begin_trans (zh, 0); + + zebra_search_RPN (zh, odr_input, query, setname1, &hits); + + rc=zebra_sort(zh, odr_output, 1, &setname1, setname2, spec, &status); + if (rc) { printf("sort A returned %d %d \n",rc,status); exit(1);} + rc=zebra_sort(zh, odr_output, 1, &setname2, setname3, spec, &status); + if (rc) { printf("sort B returned %d %d \n",rc,status); exit(1);} + + zebra_end_trans (zh); + yaz_pqf_destroy(parser); + + /* + zebra_deleleResultSet(zh, Z_DeleteRequest_list, + 1, &setnamep, &status); + */ + odr_destroy (odr_input); + odr_destroy (odr_output); + + zebra_commit (zh); + zebra_close (zh); + zebra_stop (zs); + + nmem_exit (); + xmalloc_trav ("x"); + exit (0); +} -- 1.7.10.4