const some arguments. Remove http_command.h
[pazpar2-moved-to-github.git] / src / test_record.c
1 /* This file is part of Pazpar2.
2    Copyright (C) 2006-2009 Index Data
3
4 Pazpar2 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 Pazpar2 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 #if HAVE_CONFIG_H
21 #include <config.h>
22 #endif
23
24 #define USE_TIMING 0
25 #if USE_TIMING
26 #include <yaz/timing.h>
27 #endif
28
29 #include <yaz/test.h>
30
31 #include "pazpar2_config.h"
32 #include "record.h"
33
34 void test_record(int argc, char **argv)
35 {
36     NMEM nmem = nmem_create();
37
38     struct conf_service *service = 0; 
39     struct record *record = 0;
40
41     struct client *client = 0;
42     char * bla = "blabla";
43     union data_types data_text;
44     union data_types data_num;
45     struct record_metadata * tmp_md = 0;
46
47     data_text.text.disp = bla;
48     data_text.text.sort = bla;
49
50     data_num.number.min = 2;
51     data_num.number.max = 5;
52
53
54     service =  conf_service_create(0, 4, 3, 0);
55     YAZ_CHECK(service);
56     
57     YAZ_CHECK(conf_service_add_metadata(
58                   service, 0, "title",
59                   Metadata_type_generic, Metadata_merge_unique,
60                   Metadata_setting_no, 1, 1, 1, 0,
61                   Metadata_mergekey_no
62                   ));
63
64     YAZ_CHECK(conf_service_add_metadata(
65                   service, 1, "author",
66                   Metadata_type_generic, Metadata_merge_longest,
67                   Metadata_setting_no,1, 1, 1, 0,
68                   Metadata_mergekey_no));
69
70     YAZ_CHECK(conf_service_add_metadata(
71                   service, 2, "isbn",
72                   Metadata_type_number, Metadata_merge_no,
73                   Metadata_setting_no, 1, 1, 1, 0,
74                   Metadata_mergekey_no));
75
76     YAZ_CHECK(conf_service_add_metadata(
77                   service, 3, "year",
78                   Metadata_type_year, Metadata_merge_range,
79                   Metadata_setting_no, 1, 1, 1, 0,
80                   Metadata_mergekey_no));
81
82     YAZ_CHECK(conf_service_add_sortkey(
83                   service, 0, "relevance",
84                   Metadata_sortkey_relevance));
85   
86     YAZ_CHECK(conf_service_add_sortkey(
87                   service, 1, "title",
88                   Metadata_sortkey_string));
89   
90     YAZ_CHECK(conf_service_add_sortkey(
91                   service, 2, "year",
92                   Metadata_sortkey_numeric));
93   
94
95
96
97     // testing record things
98     record = record_create(nmem, 4, 3, client, 1);
99     YAZ_CHECK(record);
100
101     tmp_md = record_metadata_insert(nmem, &(record->metadata[0]), data_text);
102     YAZ_CHECK(tmp_md);
103     YAZ_CHECK(0 == record->metadata[0]->next);
104
105     tmp_md = record_metadata_insert(nmem, &(record->metadata[0]->next), 
106                                     data_text);
107     YAZ_CHECK(tmp_md);
108     YAZ_CHECK(record->metadata[0]->next);
109
110     YAZ_CHECK(record_add_metadata_field_id(nmem, record, 3, data_num));
111     YAZ_CHECK(0 == record->metadata[3]->next);
112     YAZ_CHECK(record_add_metadata_field_id(nmem, record, 3, data_num));
113     YAZ_CHECK(record->metadata[3]->next);
114
115     YAZ_CHECK(record_add_metadata(nmem, record, service, "author", data_text));
116     YAZ_CHECK(0 == record->metadata[1]->next);
117     YAZ_CHECK(record_add_metadata(nmem, record, service, "author", data_text));
118     YAZ_CHECK(record->metadata[1]->next);
119
120
121     YAZ_CHECK(0 == record->sortkeys[0]);
122     YAZ_CHECK(record_assign_sortkey_field_id(nmem, record, 0, data_text));
123     YAZ_CHECK(record->sortkeys[0]);
124     YAZ_CHECK(0 == record->sortkeys[1]);
125     YAZ_CHECK(record_assign_sortkey_field_id(nmem, record, 1, data_text));
126     YAZ_CHECK(record->sortkeys[1]);
127     YAZ_CHECK(0 == record->sortkeys[2]);
128     YAZ_CHECK(record_assign_sortkey_field_id(nmem, record, 2, data_num));
129     YAZ_CHECK(record->sortkeys[2]);
130
131
132     YAZ_CHECK(record_assign_sortkey(nmem, record, service, "relevance", data_text));
133     YAZ_CHECK(record_assign_sortkey(nmem, record, service, "title", data_text));
134     YAZ_CHECK(record_assign_sortkey(nmem, record, service, "year", data_num));
135
136
137     nmem_destroy(nmem);
138
139     //YAZ_CHECK(0 == 0);
140     //YAZ_CHECK_EQ(0, 1);
141 }
142
143
144 int main(int argc, char **argv)
145 {
146     YAZ_CHECK_INIT(argc, argv); 
147     YAZ_CHECK_LOG(); 
148
149     test_record(argc, argv); 
150
151     YAZ_CHECK_TERM;
152 }
153
154
155 /*
156  * Local variables:
157  * c-basic-offset: 4
158  * c-file-style: "Stroustrup"
159  * indent-tabs-mode: nil
160  * End:
161  * vim: shiftwidth=4 tabstop=8 expandtab
162  */
163