Mercurial > hg > audiodb
comparison libtests/0030/prog1.c @ 493:1950d76be128 api-inversion
Even more audiodb_query() deletion
Make result_present_or_fail() be a little bit friendlier when comparing
distances.
author | mas01cr |
---|---|
date | Sat, 10 Jan 2009 15:33:11 +0000 |
parents | f4dc8e47ee37 |
children | 9d8aee621afb |
comparison
equal
deleted
inserted
replaced
492:f6b126b018d8 | 493:1950d76be128 |
---|---|
1 #include "audioDB_API.h" | 1 #include "audioDB_API.h" |
2 #include "test_utils_lib.h" | 2 #include "test_utils_lib.h" |
3 | 3 |
4 int main(int argc, char **argv) { | |
5 adb_t *adb; | |
4 | 6 |
5 int main(int argc, char **argv){ | 7 clean_remove_db(TESTDB); |
8 if(!(adb = audiodb_create(TESTDB, 0, 0, 0))) | |
9 return 1; | |
6 | 10 |
7 int returnval=0; | 11 adb_datum_t feature = {4, 2, "testfeature", |
8 adb_ptr mydbp={0}; | 12 (double [8]) {0, 1, 1, 0, 1, 0, 0, 1}, |
9 int ivals[10]; | 13 (double [4]) {-0.5, -1, -1, -0.5}}; |
10 double dvals[10]; | 14 audiodb_power(adb); |
11 adb_insert_t myinsert={0}; | 15 if(audiodb_insert_datum(adb, &feature)) |
12 char * databasename="testdb"; | 16 return 1; |
13 adb_query_t myadbquery={0}; | 17 if(audiodb_l2norm(adb)) |
14 adb_queryresult_t myadbqueryresult={0}; | 18 return 1; |
15 int size=0; | |
16 | 19 |
17 /* remove old directory */ | 20 adb_datum_t query = {3, 2, "testquery", |
18 //if [ -f testdb ]; then rm -f testdb; fi | 21 (double [6]) {0, 0.5, 0, 0.5, 0.5, 0}, |
19 clean_remove_db(databasename); | 22 (double [3]) {-0.5, -1, -1}}; |
23 adb_query_id_t qid = {0}; | |
24 qid.datum = &query; | |
25 qid.sequence_length = 1; | |
26 qid.sequence_start = 0; | |
27 adb_query_parameters_t parms = | |
28 {ADB_ACCUMULATION_PER_TRACK, ADB_DISTANCE_EUCLIDEAN_NORMED, 10, 10}; | |
29 adb_query_refine_t refine = {0}; | |
30 refine.flags = ADB_REFINE_RADIUS; | |
31 refine.radius = 0.1; | |
32 refine.hopsize = 1; | |
20 | 33 |
21 /* create new db */ | 34 adb_query_spec_t spec; |
22 //${AUDIODB} -d testdb -N | 35 spec.qid = qid; |
23 mydbp=audiodb_create(databasename,0,0,0); | 36 spec.params = parms; |
37 spec.refine = refine; | |
24 | 38 |
25 //intstring 2 > testfeature | 39 adb_query_results_t *results = audiodb_query_spec(adb, &spec); |
26 //floatstring 0 1 >> testfeature | 40 if(!results || results->nresults != 2) return 1; |
27 //floatstring 1 0 >> testfeature | 41 result_present_or_fail(results, "testfeature", 0, 0, 0); |
28 //floatstring 1 0 >> testfeature | 42 result_present_or_fail(results, "testfeature", 0, 0, 3); |
29 //floatstring 0 1 >> testfeature | 43 audiodb_query_free_results(adb, &spec, results); |
30 ivals[0]=2; | |
31 dvals[0]=0; dvals[1]=1; dvals[2]=1; dvals[3]=0; | |
32 dvals[4]=1; dvals[5]=0; dvals[6]=0; dvals[7]=1; | |
33 maketestfile("testfeature",ivals,dvals,8); | |
34 | 44 |
35 //intstring 1 > testpower | 45 spec.qid.sequence_start = 1; |
36 //floatstring -0.5 >> testpower | 46 results = audiodb_query_spec(adb, &spec); |
37 //floatstring -1 >> testpower | 47 if(!results || results->nresults != 2) return 1; |
38 //floatstring -1 >> testpower | 48 result_present_or_fail(results, "testfeature", 0, 1, 0); |
39 //floatstring -0.5 >> testpower | 49 result_present_or_fail(results, "testfeature", 0, 1, 3); |
40 ivals[0]=1; | 50 audiodb_query_free_results(adb, &spec, results); |
41 dvals[0]=-0.5; dvals[1]=-1; dvals[2]=-1; dvals[3]=-0.5; | |
42 maketestfile("testpower",ivals,dvals,4); | |
43 | 51 |
44 //expect_clean_error_exit ${AUDIODB} -d testdb -I -f testfeature -w testpower | 52 spec.qid.sequence_start = 2; |
45 myinsert.features="testfeature"; | 53 results = audiodb_query_spec(adb, &spec); |
46 myinsert.power="testpower"; | 54 if(!results || results->nresults != 2) return 1; |
47 if (!audiodb_insert(mydbp,&myinsert)){ returnval=-1; } | 55 result_present_or_fail(results, "testfeature", 0, 2, 1); |
56 result_present_or_fail(results, "testfeature", 0, 2, 2); | |
57 audiodb_query_free_results(adb, &spec, results); | |
48 | 58 |
49 //${AUDIODB} -d testdb -P | 59 spec.qid.sequence_start = 0; |
50 if(audiodb_power(mydbp)){ returnval=-1; }; | 60 spec.qid.sequence_length = 2; |
61 spec.refine.radius = 1.1; | |
62 results = audiodb_query_spec(adb, &spec); | |
63 if(!results || results->nresults != 2) return 1; | |
64 result_present_or_fail(results, "testfeature", 1, 0, 0); | |
65 result_present_or_fail(results, "testfeature", 1, 0, 2); | |
66 audiodb_query_free_results(adb, &spec, results); | |
51 | 67 |
52 //expect_clean_error_exit ${AUDIODB} -d testdb -I -f testfeature | 68 spec.refine.radius = 0.9; |
53 myinsert.features="testfeature"; | 69 results = audiodb_query_spec(adb, &spec); |
54 myinsert.power=NULL; | 70 if(!results || results->nresults != 0) return 1; |
55 if (!audiodb_insert(mydbp,&myinsert)){ returnval=-1; } | 71 audiodb_query_free_results(adb, &spec, results); |
56 | 72 |
57 //${AUDIODB} -d testdb -I -f testfeature -w testpower | 73 spec.qid.sequence_start = 1; |
58 myinsert.features="testfeature"; | 74 results = audiodb_query_spec(adb, &spec); |
59 myinsert.power="testpower"; | 75 if(!results || results->nresults != 1) return 1; |
60 if (audiodb_insert(mydbp,&myinsert)){ returnval=-1; } | 76 result_present_or_fail(results, "testfeature", 0, 1, 0); |
61 printf("returnval:%d\n",returnval); | 77 audiodb_query_free_results(adb, &spec, results); |
62 | 78 |
63 //# sequence queries require L2NORM | 79 /* tests with power from here on down */ |
64 //${AUDIODB} -d testdb -L | |
65 if(audiodb_l2norm(mydbp)){ returnval=-1; }; | |
66 | 80 |
67 //echo "query points (0.0,0.5),(0.0,0.5),(0.5,0.0)" | 81 spec.qid.sequence_length = 2; |
68 //intstring 2 > testquery | 82 spec.qid.sequence_start = 0; |
69 //floatstring 0 0.5 >> testquery | 83 spec.refine.flags = ADB_REFINE_RADIUS|ADB_REFINE_ABSOLUTE_THRESHOLD; |
70 //floatstring 0 0.5 >> testquery | 84 spec.refine.radius = 1.1; |
71 //floatstring 0.5 0 >> testquery | 85 spec.refine.absolute_threshold = -1.4; |
72 ivals[0]=2; | 86 results = audiodb_query_spec(adb, &spec); |
73 dvals[0]=0; dvals[1]=0.5; dvals[2]=0; dvals[3]=0.5; dvals[4]=0.5; dvals[5]=0; | 87 if(!results || results->nresults != 2) return 1; |
74 maketestfile("testquery",ivals,dvals,6); | 88 result_present_or_fail(results, "testfeature", 1, 0, 0); |
89 result_present_or_fail(results, "testfeature", 1, 0, 2); | |
90 audiodb_query_free_results(adb, &spec, results); | |
75 | 91 |
76 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -R 0.1 > testoutput | 92 spec.refine.absolute_threshold = -0.8; |
77 //audioDB -Q sequence -d testdb -f testquery -R 0.1 -l 1 | 93 results = audiodb_query_spec(adb, &spec); |
78 //echo testfeature 1 > test-expected-output | 94 if(!results || results->nresults != 2) return 1; |
79 //cmp testoutput test-expected-output | 95 result_present_or_fail(results, "testfeature", 1, 0, 0); |
80 myadbquery.querytype="sequence"; | 96 result_present_or_fail(results, "testfeature", 1, 0, 2); |
81 myadbquery.feature="testquery"; | 97 audiodb_query_free_results(adb, &spec, results); |
82 //myadbquery.power="testquerypower"; | |
83 myadbquery.sequencelength="1"; | |
84 //myadbquery.qpoint="0"; | |
85 //myadbquery.absolute_threshold=0.0; | |
86 //myadbquery.relative_threshold=0.1; | |
87 myadbquery.radius="0.1"; | |
88 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
89 size=myadbqueryresult.sizeRlist; | |
90 | 98 |
91 /* check the test values */ | 99 spec.refine.absolute_threshold = -0.7; |
92 if (size != 1) {returnval = -1;}; | 100 results = audiodb_query_spec(adb, &spec); |
93 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | 101 if(!results || results->nresults != 0) return 1; |
102 audiodb_query_free_results(adb, &spec, results); | |
94 | 103 |
95 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -p 0 -R 0.1 > testoutput | 104 spec.qid.sequence_start = 1; |
96 //echo testfeature 1 > test-expected-output | 105 spec.refine.absolute_threshold = -1.4; |
97 //cmp testoutput test-expected-output | 106 spec.refine.radius = 0.9; |
98 myadbquery.querytype="sequence"; | 107 results = audiodb_query_spec(adb, &spec); |
99 myadbquery.feature="testquery"; | 108 if(!results || results->nresults != 1) return 1; |
100 //myadbquery.power="testquerypower"; | 109 result_present_or_fail(results, "testfeature", 0, 1, 0); |
101 myadbquery.sequencelength="1"; | 110 audiodb_query_free_results(adb, &spec, results); |
102 myadbquery.qpoint="0"; | |
103 //myadbquery.absolute_threshold=0.0; | |
104 //myadbquery.relative_threshold=0.1; | |
105 myadbquery.radius="0.1"; | |
106 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
107 size=myadbqueryresult.sizeRlist; | |
108 | 111 |
109 /* check the test values */ | 112 spec.refine.absolute_threshold = -0.9; |
110 if (size != 1) {returnval = -1;}; | 113 results = audiodb_query_spec(adb, &spec); |
111 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | 114 if(!results || results->nresults != 0) return 1; |
115 audiodb_query_free_results(adb, &spec, results); | |
112 | 116 |
113 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -p 1 -R 0.1 > testoutput | 117 spec.qid.sequence_length = 2; |
114 //echo testfeature 1 > test-expected-output | 118 spec.qid.sequence_start = 0; |
115 //cmp testoutput test-expected-output | 119 spec.refine.absolute_threshold = 0; |
116 myadbquery.querytype="sequence"; | 120 spec.refine.flags = ADB_REFINE_RADIUS|ADB_REFINE_RELATIVE_THRESHOLD; |
117 myadbquery.feature="testquery"; | 121 spec.refine.radius = 1.1; |
118 //myadbquery.power="testquerypower"; | 122 spec.refine.relative_threshold = 0.1; |
119 myadbquery.sequencelength="1"; | 123 results = audiodb_query_spec(adb, &spec); |
120 myadbquery.qpoint="1"; | 124 if(!results || results->nresults != 2) return 1; |
121 //myadbquery.absolute_threshold=0.0; | 125 result_present_or_fail(results, "testfeature", 1, 0, 0); |
122 //myadbquery.relative_threshold=0.1; | 126 result_present_or_fail(results, "testfeature", 1, 0, 2); |
123 myadbquery.radius="0.1"; | 127 audiodb_query_free_results(adb, &spec, results); |
124 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
125 size=myadbqueryresult.sizeRlist; | |
126 | 128 |
127 /* check the test values */ | 129 spec.refine.radius = 0.9; |
128 if (size != 1) {returnval = -1;}; | 130 results = audiodb_query_spec(adb, &spec); |
129 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | 131 if(!results || results->nresults != 0) return 1; |
132 audiodb_query_free_results(adb, &spec, results); | |
130 | 133 |
131 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -p 0 -R 1.1 > testoutput | 134 return 104; |
132 //echo testfeature 1 > test-expected-output | |
133 //cmp testoutput test-expected-output | |
134 myadbquery.querytype="sequence"; | |
135 myadbquery.feature="testquery"; | |
136 //myadbquery.power="testquerypower"; | |
137 myadbquery.sequencelength="2"; | |
138 myadbquery.qpoint="0"; | |
139 //myadbquery.absolute_threshold=0.0; | |
140 //myadbquery.relative_threshold=0.1; | |
141 myadbquery.radius="1.1"; | |
142 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
143 size=myadbqueryresult.sizeRlist; | |
144 | |
145 /* check the test values */ | |
146 if (size != 1) {returnval = -1;}; | |
147 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | |
148 | |
149 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -p 0 -R 0.9 > testoutput | |
150 //cat /dev/null > test-expected-output | |
151 //cmp testoutput test-expected-output | |
152 myadbquery.querytype="sequence"; | |
153 myadbquery.feature="testquery"; | |
154 //myadbquery.power="testquerypower"; | |
155 myadbquery.sequencelength="2"; | |
156 myadbquery.qpoint="0"; | |
157 //myadbquery.absolute_threshold=0.0; | |
158 //myadbquery.relative_threshold=0.1; | |
159 myadbquery.radius="0.9"; | |
160 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
161 size=myadbqueryresult.sizeRlist; | |
162 | |
163 /* check the test values */ | |
164 if (size != 0) {returnval = -1;}; | |
165 | |
166 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -p 1 -R 0.9 > testoutput | |
167 //echo testfeature 1 > test-expected-output | |
168 //cmp testoutput test-expected-output | |
169 myadbquery.querytype="sequence"; | |
170 myadbquery.feature="testquery"; | |
171 //myadbquery.power="testquerypower"; | |
172 myadbquery.sequencelength="2"; | |
173 myadbquery.qpoint="1"; | |
174 myadbquery.radius="0.9"; | |
175 //myadbquery.absolute_threshold=0.0; | |
176 //myadbquery.relative_threshold=0.1; | |
177 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
178 size=myadbqueryresult.sizeRlist; | |
179 | |
180 /* check the test values */ | |
181 if (size != 1) {returnval = -1;}; | |
182 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | |
183 | |
184 //echo "query points (0.0,0.5)p=-0.5,(0.0,0.5)p=-1,(0.5,0.0)p=-1" | |
185 //intstring 1 > testquerypower | |
186 //floatstring -0.5 -1 -1 >> testquerypower | |
187 ivals[0]=1; | |
188 dvals[0]=-0.5; dvals[1]=-1; dvals[2]=-1; | |
189 maketestfile("testquerypower",ivals,dvals,3); | |
190 | |
191 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-1.4 -p 0 -R 1.1 > testoutput | |
192 //echo testfeature 1 > test-expected-output | |
193 //cmp testoutput test-expected-output | |
194 myadbquery.querytype="sequence"; | |
195 myadbquery.feature="testquery"; | |
196 myadbquery.power="testquerypower"; | |
197 myadbquery.sequencelength="2"; | |
198 myadbquery.qpoint="0"; | |
199 myadbquery.absolute_threshold=-1.4; | |
200 myadbquery.relative_threshold=0.0; | |
201 myadbquery.radius="1.1"; | |
202 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
203 size=myadbqueryresult.sizeRlist; | |
204 | |
205 /* check the test values */ | |
206 if (size != 1) {returnval = -1;}; | |
207 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | |
208 | |
209 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-0.8 -p 0 -R 1.1 > testoutput | |
210 //echo testfeature 1 > test-expected-output | |
211 //cmp testoutput test-expected-output | |
212 myadbquery.querytype="sequence"; | |
213 myadbquery.feature="testquery"; | |
214 myadbquery.power="testquerypower"; | |
215 myadbquery.sequencelength="2"; | |
216 myadbquery.qpoint="0"; | |
217 myadbquery.absolute_threshold=-0.8; | |
218 //myadbquery.relative_threshold=0.1; | |
219 myadbquery.radius="1.1"; | |
220 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
221 size=myadbqueryresult.sizeRlist; | |
222 | |
223 /* check the test values */ | |
224 if (size != 1) {returnval = -1;}; | |
225 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | |
226 | |
227 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-0.7 -p 0 -R 1.1 > testoutput | |
228 //cat /dev/null > test-expected-output | |
229 //cmp testoutput test-expected-output | |
230 myadbquery.querytype="sequence"; | |
231 myadbquery.feature="testquery"; | |
232 myadbquery.power="testquerypower"; | |
233 myadbquery.sequencelength="2"; | |
234 myadbquery.qpoint="0"; | |
235 myadbquery.absolute_threshold=-0.7; | |
236 myadbquery.relative_threshold=0.0; | |
237 myadbquery.radius="1.1"; | |
238 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
239 size=myadbqueryresult.sizeRlist; | |
240 | |
241 /* check the test values */ | |
242 if (size != 0) {returnval = -1;}; | |
243 | |
244 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-1.4 -p 1 -R 0.9 > testoutput | |
245 //echo testfeature 1 > test-expected-output | |
246 //cmp testoutput test-expected-output | |
247 myadbquery.querytype="sequence"; | |
248 myadbquery.feature="testquery"; | |
249 myadbquery.power="testquerypower"; | |
250 myadbquery.sequencelength="2"; | |
251 myadbquery.qpoint="1"; | |
252 myadbquery.absolute_threshold=-1.4; | |
253 myadbquery.relative_threshold=0.0; | |
254 myadbquery.radius="0.9"; | |
255 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
256 size=myadbqueryresult.sizeRlist; | |
257 | |
258 /* check the test values */ | |
259 if (size != 1) {returnval = -1;}; | |
260 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | |
261 | |
262 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --absolute-threshold=-0.9 -p 1 -R 0.9 > testoutput | |
263 //cat /dev/null > test-expected-output | |
264 //cmp testoutput test-expected-output | |
265 myadbquery.querytype="sequence"; | |
266 myadbquery.feature="testquery"; | |
267 myadbquery.power="testquerypower"; | |
268 myadbquery.sequencelength="2"; | |
269 myadbquery.qpoint="1"; | |
270 myadbquery.absolute_threshold=-0.9; | |
271 myadbquery.relative_threshold=0.0; | |
272 myadbquery.radius="0.9"; | |
273 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
274 size=myadbqueryresult.sizeRlist; | |
275 | |
276 /* check the test values */ | |
277 if (size != 0) {returnval = -1;}; | |
278 | |
279 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --relative-threshold=0.1 -p 0 -R 1.1 > testoutput | |
280 //echo testfeature 1 > test-expected-output | |
281 //cmp testoutput test-expected-output | |
282 myadbquery.querytype="sequence"; | |
283 myadbquery.feature="testquery"; | |
284 myadbquery.power="testquerypower"; | |
285 myadbquery.sequencelength="2"; | |
286 myadbquery.qpoint="0"; | |
287 myadbquery.absolute_threshold=0.0; | |
288 myadbquery.relative_threshold=0.1; | |
289 myadbquery.radius="1.1"; | |
290 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
291 size=myadbqueryresult.sizeRlist; | |
292 | |
293 /* check the test values */ | |
294 if (size != 1) {returnval = -1;}; | |
295 if (testoneradiusresult(&myadbqueryresult,0,"testfeature",1)) {returnval = -1;}; | |
296 | |
297 //${AUDIODB} -d testdb -Q sequence -l 2 -f testquery -w testquerypower --relative-threshold=0.1 -p 0 -R 0.9 > testoutput | |
298 //cat /dev/null > test-expected-output | |
299 //cmp testoutput test-expected-output | |
300 myadbquery.querytype="sequence"; | |
301 myadbquery.feature="testquery"; | |
302 myadbquery.power="testquerypower"; | |
303 myadbquery.sequencelength="2"; | |
304 myadbquery.qpoint="0"; | |
305 myadbquery.absolute_threshold=0.0; | |
306 myadbquery.relative_threshold=0.1; | |
307 myadbquery.radius="0.9"; | |
308 audiodb_query(mydbp,&myadbquery,&myadbqueryresult); | |
309 size=myadbqueryresult.sizeRlist; | |
310 | |
311 /* check the test values */ | |
312 if (size != 0) {returnval = -1;}; | |
313 | |
314 //returnval=-1; | |
315 printf("returnval:%d\n",returnval); | |
316 | |
317 return(returnval); | |
318 } | 135 } |
319 |