f865c51bc7aaa39987bde693de4cdd80e8bf99ee
[idzebra-moved-to-github.git] / test / api / safari1.c
1 /* $Id: safari1.c,v 1.10 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 /* safari1 - insert a few Safari records */
24
25 #include "testlib.h"
26
27 const char *myrec[] = 
28 {
29     "1234\n"  /* ID first record */
30     /* chunk owner seq idx term */
31     "00024338 125060 1 any the\n"
32     "00024338 125060 2 any art\n"
33     "00024338 125060 3 any mand\n",
34
35     "5678\n"  /* other record - same owner id */
36     "00024339 125060 1 any den\n"
37     "00024339 125060 2 any gamle\n"
38     "00024339 125060 3 any mand\n",
39
40     "5678\n"  /* same record chunk id as before .. */
41     "00024339 125060 1 any the\n"
42     "00024339 125060 2 any gamle\n"
43     "00024339 125060 3 any mand\n",
44
45     "1000\n"  /* separate record */
46     "00024339 125061 1 any the\n"
47     "00024339 125061 2 any gamle\n"
48     "00024339 125061 3 any mand\n",
49     
50     "1001\n"  /* separate record */
51     "00024340 125062 1 any the\n"
52     "00024340 125062 1 any the\n" /* DUP KEY, bug #432 */
53     "00024340 125062 2 any old\n"
54     "00024340 125062 3 any mand\n",
55
56     0
57 };
58
59 static void tst(int argc, char **argv)
60 {
61     zint ids[3];
62     zint limits[3];
63     ZebraService zs = tl_start_up("safari.cfg", argc, argv);
64     
65     ZebraHandle zh = zebra_open(zs, 0);
66
67     YAZ_CHECK(tl_init_data(zh, myrec));
68
69     YAZ_CHECK(tl_query(zh, "@attr 4=3 @attr 1=any the", 3));
70     YAZ_CHECK(tl_query(zh, "@attr 4=3 @attr 1=any @and the art", 1));
71     YAZ_CHECK(tl_query(zh, "@attr 4=3 @attr 1=any @and den gamle", 0));
72     YAZ_CHECK(tl_query(zh, "@attr 4=3 @attr 1=any @and the gamle", 1));
73     YAZ_CHECK(tl_query(zh, "@attr 4=3 @attr 1=any @and the of", 0));
74
75     /* verify that we get these records exactly */
76     ids[0] = 24338;
77     ids[1] = 24339;
78     ids[2] = 24340;
79     YAZ_CHECK(tl_meta_query(zh, "@attr 4=3 @attr 1=any mand", 3, ids));
80
81     /* limit to 125061 */
82     limits[0] = 125061;
83     limits[1] = 0;
84     zebra_set_limit(zh, 0, limits);
85     ids[0] = 24339;
86     YAZ_CHECK(tl_meta_query(zh, "@attr 4=3 @attr 1=any mand", 1, ids));
87
88     /* limit to 125060, 125061 */
89     limits[0] = 125061;
90     limits[1] = 125060;
91     limits[2] = 0;
92     zebra_set_limit(zh, 0, limits);
93     ids[0] = 24338;
94     ids[1] = 24339;
95     YAZ_CHECK(tl_meta_query(zh, "@attr 4=3 @attr 1=any mand", 2, ids));
96
97     /* all except 125062 */
98     limits[0] = 125062;
99     limits[1] = 0;
100     zebra_set_limit(zh, 1, limits);
101
102     ids[0] = 24338;
103     ids[1] = 24339;
104     YAZ_CHECK(tl_meta_query(zh, "@attr 4=3 @attr 1=any mand", 2, ids));
105
106     /* no limit */
107     zebra_set_limit(zh, 1, 0);
108     YAZ_CHECK(tl_query(zh, "@attr 4=3 @attr 1=any mand", 3));
109
110     YAZ_CHECK(tl_close_down(zh, zs));
111 }
112
113 TL_MAIN