Added subject md element.
[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
35
36 void test_record(int argc, char **argv)
37 {
38   NMEM  nmem = nmem_create();
39
40   struct conf_service *service = 0; 
41   struct record *record = 0;
42
43   struct client *client = 0;
44   char * bla = "blabla";
45   union data_types data_text;
46   union data_types data_num;
47   struct record_metadata * tmp_md = 0;
48
49   data_text.text.disp = bla;
50   data_text.text.sort = bla;
51
52   data_num.number.min = 2;
53   data_num.number.max = 5;
54
55
56   service =  conf_service_create(nmem, 4, 3);
57   YAZ_CHECK(service);
58
59   YAZ_CHECK(conf_service_add_metadata(
60                 nmem, service, 0, "title",
61                 Metadata_type_generic, Metadata_merge_unique,
62                 Metadata_setting_no, 1, 1, 1, 0,
63                 Metadata_mergekey_no
64                 ));
65
66   YAZ_CHECK(conf_service_add_metadata(
67                 nmem, service, 1, "author",
68                 Metadata_type_generic, Metadata_merge_longest,
69                 Metadata_setting_no,1, 1, 1, 0,
70                 Metadata_mergekey_no));
71
72   YAZ_CHECK(conf_service_add_metadata(
73                 nmem, service, 2, "isbn",
74                 Metadata_type_number, Metadata_merge_no,
75                 Metadata_setting_no, 1, 1, 1, 0,
76                 Metadata_mergekey_no));
77
78   YAZ_CHECK(conf_service_add_metadata(
79                 nmem, service, 3, "year",
80                 Metadata_type_year, Metadata_merge_range,
81                 Metadata_setting_no, 1, 1, 1, 0,
82                 Metadata_mergekey_no));
83
84   YAZ_CHECK(conf_service_add_sortkey(
85                 nmem, service, 0, "relevance",
86                 Metadata_sortkey_relevance));
87   
88   YAZ_CHECK(conf_service_add_sortkey(
89                 nmem, service, 1, "title",
90                 Metadata_sortkey_string));
91   
92   YAZ_CHECK(conf_service_add_sortkey(
93                 nmem, service, 2, "year",
94                 Metadata_sortkey_numeric));
95   
96
97
98
99   // testing record things
100   record = record_create(nmem, 4, 3, client, 1);
101   YAZ_CHECK(record);
102
103   tmp_md = record_metadata_insert(nmem, &(record->metadata[0]), data_text);
104   YAZ_CHECK(tmp_md);
105   YAZ_CHECK(0 == record->metadata[0]->next);
106
107   tmp_md = record_metadata_insert(nmem, &(record->metadata[0]->next), 
108                                   data_text);
109   YAZ_CHECK(tmp_md);
110   YAZ_CHECK(record->metadata[0]->next);
111
112   YAZ_CHECK(record_add_metadata_field_id(nmem, record, 3, data_num));
113   YAZ_CHECK(0 == record->metadata[3]->next);
114   YAZ_CHECK(record_add_metadata_field_id(nmem, record, 3, data_num));
115   YAZ_CHECK(record->metadata[3]->next);
116
117   YAZ_CHECK(record_add_metadata(nmem, record, service, "author", data_text));
118   YAZ_CHECK(0 == record->metadata[1]->next);
119   YAZ_CHECK(record_add_metadata(nmem, record, service, "author", data_text));
120   YAZ_CHECK(record->metadata[1]->next);
121
122
123   YAZ_CHECK(0 == record->sortkeys[0]);
124   YAZ_CHECK(record_assign_sortkey_field_id(nmem, record, 0, data_text));
125   YAZ_CHECK(record->sortkeys[0]);
126   YAZ_CHECK(0 == record->sortkeys[1]);
127   YAZ_CHECK(record_assign_sortkey_field_id(nmem, record, 1, data_text));
128   YAZ_CHECK(record->sortkeys[1]);
129   YAZ_CHECK(0 == record->sortkeys[2]);
130   YAZ_CHECK(record_assign_sortkey_field_id(nmem, record, 2, data_num));
131   YAZ_CHECK(record->sortkeys[2]);
132
133
134   YAZ_CHECK(record_assign_sortkey(nmem, record, service, "relevance", data_text));
135   YAZ_CHECK(record_assign_sortkey(nmem, record, service, "title", data_text));
136   YAZ_CHECK(record_assign_sortkey(nmem, record, service, "year", data_num));
137
138
139
140
141   nmem_destroy(nmem);
142
143   //YAZ_CHECK(0 == 0);
144   //YAZ_CHECK_EQ(0, 1);
145 }
146
147
148 int main(int argc, char **argv)
149 {
150     YAZ_CHECK_INIT(argc, argv); 
151     YAZ_CHECK_LOG(); 
152
153
154     test_record(argc, argv); 
155
156     
157     YAZ_CHECK_TERM;
158 }
159
160
161
162
163 /*
164  * Local variables:
165  * c-basic-offset: 4
166  * c-file-style: "Stroustrup"
167  * indent-tabs-mode: nil
168  * End:
169  * vim: shiftwidth=4 tabstop=8 expandtab
170  */
171