cbe4ca3678e50ccd66eb359791d6e94e662711ba
[idzebra-moved-to-github.git] / test / api / test_sort1.c
1 /* This file is part of the Zebra server.
2    Copyright (C) 1995-2008 Index Data
3
4 Zebra is free software; you can redistribute it and/or modify it under
5 the terms of the GNU General Public License as published by the Free
6 Software Foundation; either version 2, or (at your option) any later
7 version.
8
9 Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
18 */
19
20 #include "testlib.h"
21
22 const char *myrec[] = {
23     "<sort1>\n"
24     "  <title>first computer</title>\n"
25     "  <dateTime>2</dateTime>\n"
26     "  <cost>2</cost>\n"
27     "</sort1>\n"
28     ,
29     "<sort1>\n"
30     "  <title>second computer</title>\n"
31     "  <dateTime>1</dateTime>\n"
32     "  <cost>21</cost>\n"
33     "</sort1>\n"
34     ,
35     "<sort1>\n"
36     "  <title>3rd computer</title>\n"
37 "  <dateTime>a^3</dateTime>\n"
38     "  <cost>15</cost>\n"
39     "</sort1>\n"
40     ,
41     "<sort1>\n"
42     "  <title>fourth computer</title>\n"
43     "  <dateTime>4</dateTime>\n"
44     "  <cost>11</cost>\n"
45     "</sort1>\n"
46     ,
47     0
48 };
49
50 static void tst(int argc, char **argv)
51 {
52     ZebraService zs = tl_start_up("test_sort1.cfg", argc, argv);
53     ZebraHandle  zh = zebra_open(zs, 0);
54     zint ids[5];
55
56     YAZ_CHECK(tl_init_data(zh, myrec));
57
58     ids[0] = 3;
59     ids[1] = 2;
60     ids[2] = 4;
61     ids[3] = 5;
62     YAZ_CHECK(tl_sort(zh, "@or @attr 1=4 computer @attr 7=1 @attr 1=30 0", 4, ids));
63     YAZ_CHECK(tl_sort(zh, "@or @attr 1=4 computer @attr 7=1 @attr 1=Date 0", 4, ids));
64
65     ids[0] = 5;
66     ids[1] = 4;
67     ids[2] = 2;
68     ids[3] = 3;
69     YAZ_CHECK(tl_sort(zh, "@or @attr 1=4 computer @attr 7=1 @attr 1=1021 0", 4, ids));
70     YAZ_CHECK(tl_sort(zh, "@or @attr 1=4 computer @attr 7=1 @attr 1=Bib-Level 0", 4, ids));
71
72     ids[0] = 2;
73     ids[1] = 5;
74     ids[2] = 4;
75     ids[3] = 3;
76     YAZ_CHECK(tl_sort(zh, "@or @attr 1=4 computer @attr 7=1 @attr 1=1021 @attr 4=109 0", 4, ids));
77     YAZ_CHECK(tl_sort(zh, "@or @attr 1=4 computer @attr 7=1 @attr 1=Bib-Level @attr 4=109 0", 4, ids));
78
79     YAZ_CHECK(tl_close_down(zh, zs));
80 }
81
82
83 TL_MAIN
84 /*
85  * Local variables:
86  * c-basic-offset: 4
87  * indent-tabs-mode: nil
88  * End:
89  * vim: shiftwidth=4 tabstop=8 expandtab
90  */
91