f702e936932bb980e3ec60d5664a6191ff6026fe
[idzebra-moved-to-github.git] / test / api / safari1.c
1 /* $Id: safari1.c,v 1.9 2006-03-21 14:36:22 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 int main(int argc, char **argv)
60 {
61     zint ids[3];
62     zint limits[3];
63     ZebraService zs = start_up("safari.cfg", argc, argv);
64     
65     ZebraHandle zh = zebra_open(zs, 0);
66
67     init_data(zh, myrec);
68     do_query(__LINE__, zh, "@attr 4=3 @attr 1=any the", 3);
69     do_query(__LINE__, zh, "@attr 4=3 @attr 1=any @and the art", 1);
70     do_query(__LINE__, zh, "@attr 4=3 @attr 1=any @and den gamle", 0);
71     do_query(__LINE__, zh, "@attr 4=3 @attr 1=any @and the gamle", 1);
72     do_query(__LINE__, zh, "@attr 4=3 @attr 1=any @and the of", 0);
73
74     /* verify that we get these records exactly */
75     ids[0] = 24338;
76     ids[1] = 24339;
77     ids[2] = 24340;
78     meta_query(__LINE__, zh, "@attr 4=3 @attr 1=any mand", 3, ids);
79
80     /* limit to 125061 */
81     limits[0] = 125061;
82     limits[1] = 0;
83     zebra_set_limit(zh, 0, limits);
84     ids[0] = 24339;
85     meta_query(__LINE__, zh, "@attr 4=3 @attr 1=any mand", 1, ids);
86
87     /* limit to 125060, 125061 */
88     limits[0] = 125061;
89     limits[1] = 125060;
90     limits[2] = 0;
91     zebra_set_limit(zh, 0, limits);
92     ids[0] = 24338;
93     ids[1] = 24339;
94     meta_query(__LINE__, zh, "@attr 4=3 @attr 1=any mand", 2, ids);
95
96     /* all except 125062 */
97     limits[0] = 125062;
98     limits[1] = 0;
99     zebra_set_limit(zh, 1, limits);
100
101     ids[0] = 24338;
102     ids[1] = 24339;
103     meta_query(__LINE__, zh, "@attr 4=3 @attr 1=any mand", 2, ids);
104
105     /* no limit */
106     zebra_set_limit(zh, 1, 0);
107     do_query(__LINE__, zh, "@attr 4=3 @attr 1=any mand", 3);
108
109     return close_down(zh, zs, 0);
110 }