a57726ca292354ee1d85003c221fdfd3093ce2af
[idzebra-moved-to-github.git] / test / api / t7.c
1 /* $Id: t7.c,v 1.11 2006-03-31 15:58:05 adam Exp $
2    Copyright (C) 1995-2005
3    Index Data ApS
4
5 This file is part of the Zebra server.
6
7 Zebra is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
10 version.
11
12 Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Zebra; see the file LICENSE.zebra.  If not, write to the
19 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA.
21 */
22
23 /** t7.c sorting  */
24
25 #include "testlib.h"
26 #include <yaz/sortspec.h>
27
28 const char *recs[] = {
29         "<gils>\n"
30         "  <title>My title</title>\n"
31         "</gils>\n",
32         0};
33
34 static void tst(int argc, char **argv)
35 {
36     const char *setname1 = "set1";
37     const char *setname2 = "set2";
38     const char *setname3 = "set3";
39     int status;
40     ZebraService zs = tl_start_up(0, argc, argv);
41     ZebraHandle  zh = zebra_open (zs, 0);
42     ODR odr_input = odr_createmem (ODR_DECODE);    
43     ODR odr_output = odr_createmem (ODR_ENCODE);    
44     YAZ_PQF_Parser parser = yaz_pqf_create();
45     Z_RPNQuery *query = yaz_pqf_parse(parser, odr_input, "@attr 1=4 my");
46     Z_SortKeySpecList *spec = yaz_sort_spec (odr_output, "1=4 <");
47     zint hits;
48
49     YAZ_CHECK(tl_init_data(zh, recs));
50
51     YAZ_CHECK(zebra_begin_trans(zh, 0) == ZEBRA_OK);
52         
53     YAZ_CHECK(zebra_search_RPN(zh, odr_input, query, setname1, &hits) ==
54               ZEBRA_OK);
55
56     YAZ_CHECK(zebra_sort(zh, odr_output, 1, &setname1, setname2, spec,
57                          &status)
58               == ZEBRA_OK);
59     YAZ_CHECK(zebra_sort(zh, odr_output, 1, &setname2, setname3, spec, 
60                          &status) == ZEBRA_OK);
61
62     spec = yaz_sort_spec(odr_output, "1=5 <"); /* invalid sort spec */
63
64     YAZ_CHECK(zebra_sort(zh, odr_output, 1, &setname1, setname2, spec,
65                          &status) == ZEBRA_FAIL);
66
67     YAZ_CHECK(zebra_end_trans(zh) == ZEBRA_OK);
68
69     yaz_pqf_destroy(parser);
70
71     /*
72      zebra_deleteResultSet(zh, Z_DeleteRequest_list,
73                           1, &setnamep, &status);
74     */  
75     odr_destroy(odr_input);
76     odr_destroy(odr_output);
77
78     zebra_commit(zh);
79
80     YAZ_CHECK(tl_close_down(zh, zs));
81 }
82
83 TL_MAIN