annotate libtests/0027/prog1.c @ 469:d3afc91d205d api-inversion

Move audioDB::query over to audioDB.cpp At the same time, remove all the abstraction violations in audioDB::query, which came in two flavours: use of dbH->numFiles, which is dealt with by getting the database status instead (and is eventually unnecessary, being only needed now because reporters are implemented in terms of vectors indexed by ID), and use of fileTable in reporter's report functions (dealt with by passing in the adb instead). To actually implement reporting as of now, we continue to use stuff from audioDB-internals.h; maybe someday we will be clean and shiny.
author mas01cr
date Wed, 31 Dec 2008 15:44:16 +0000
parents 1fb8bee777e5
children e072aa1611f5
rev   line source
mas01ik@355 1 #include <stdio.h>
mas01ik@355 2 #include <stdlib.h>
mas01ik@355 3 #include <string.h>
mas01ik@355 4 #include <sysexits.h>
mas01ik@355 5 #include <fcntl.h>
mas01ik@355 6 #include <dirent.h>
mas01ik@355 7 #include <unistd.h>
mas01ik@355 8 #include <sys/stat.h>
mas01ik@355 9 /*
mas01ik@355 10 * * #define NDEBUG
mas01ik@355 11 * * */
mas01ik@355 12 #include <assert.h>
mas01ik@355 13
mas01ik@355 14 #include "../../audioDB_API.h"
mas01ik@355 15 #include "../test_utils_lib.h"
mas01ik@355 16
mas01ik@355 17
mas01ik@355 18 int main(int argc, char **argv){
mas01ik@355 19
mas01ik@355 20 int returnval=0;
mas01ik@355 21 adb_ptr mydbp={0};
mas01ik@355 22 int ivals[10];
mas01ik@355 23 double dvals[10];
mas01ik@355 24 adb_insert_t myinsert={0};
mas01ik@355 25 unsigned int myerr=0;
mas01ik@355 26 char * databasename="testdb";
mas01ik@355 27 adb_query_t myadbquery={0};
mas01ik@355 28 adb_queryresult_t myadbqueryresult={0};
mas01ik@355 29 adb_query_t myadbquery2={0};
mas01ik@355 30 adb_queryresult_t myadbqueryresult2={0};
mas01ik@355 31 int size=0;
mas01ik@355 32
mas01ik@355 33
mas01ik@355 34 /* remove old directory */
mas01ik@355 35 //if [ -f testdb ]; then rm -f testdb; fi
mas01ik@355 36 clean_remove_db(databasename);
mas01ik@355 37
mas01ik@355 38 /* create new db */
mas01ik@355 39 //${AUDIODB} -d testdb -N
mas01ik@355 40 mydbp=audiodb_create(databasename,0,0,0);
mas01ik@355 41
mas01ik@355 42 //intstring 2 > testfeature
mas01ik@355 43 //floatstring 0 1 >> testfeature
mas01ik@355 44 //floatstring 1 0 >> testfeature
mas01ik@355 45 ivals[0]=2;
mas01ik@355 46 dvals[0]=0; dvals[1]=1; dvals[2]=1; dvals[3]=0;
mas01ik@355 47 maketestfile("testfeature",ivals,dvals,4);
mas01ik@355 48
mas01ik@355 49 //intstring 1 > testpower
mas01ik@355 50 //floatstring -0.5 >> testpower
mas01ik@355 51 //floatstring -1 >> testpower
mas01ik@355 52 ivals[0]=1;
mas01ik@355 53 dvals[0]=-0.5; dvals[1]=-1;
mas01ik@355 54 maketestfile("testpower",ivals,dvals,2);
mas01ik@355 55
mas01ik@355 56 /* insert breaks because power flag off and power insert */
mas01ik@355 57 //expect_clean_error_exit ${AUDIODB} -d testdb -I -f testfeature -w testpower
mas01ik@355 58 myinsert.features="testfeature";
mas01ik@355 59 myinsert.power="testpower";
mas01ik@355 60 if (!audiodb_insert(mydbp,&myinsert)){ returnval=-1; }
mas01ik@355 61
mas01ik@355 62
mas01ik@355 63 /* make sure power can be turned on */
mas01ik@355 64 //${AUDIODB} -d testdb -P
mas01ik@355 65 if(audiodb_power(mydbp)){ returnval=-1; };
mas01ik@355 66
mas01ik@355 67
mas01ik@355 68 /* inserts now require power also */
mas01ik@355 69 ////expect_clean_error_exit ${AUDIODB} -d testdb -I -f testfeature
mas01ik@355 70 myinsert.features="testfeature";
mas01ik@355 71 myinsert.power=NULL;
mas01ik@355 72 //myerr=audiodb_insert(mydbp,&myinsert);
mas01ik@355 73 if (!audiodb_insert(mydbp,&myinsert)){ returnval=-1; }
mas01ik@355 74
mas01ik@355 75 /* now make a real insert */
mas01ik@355 76 //${AUDIODB} -d testdb -I -f testfeature -w testpower
mas01ik@355 77 myinsert.features="testfeature";
mas01ik@355 78 myinsert.power="testpower";
mas01cr@404 79 //myerr=audiodb_insert(mydbp,&myinsert);
mas01ik@355 80 if (audiodb_insert(mydbp,&myinsert)){ returnval=-1; }
mas01ik@355 81
mas01ik@355 82
mas01ik@355 83 //# sequence queries require L2NORM
mas01ik@355 84 //${AUDIODB} -d testdb -L
mas01ik@355 85 if(audiodb_l2norm(mydbp)){ returnval=-1; };
mas01ik@355 86
mas01ik@355 87
mas01ik@355 88 //# queries without power files should run as before
mas01ik@355 89 //echo "query point (0.0,0.5)"
mas01ik@355 90 //intstring 2 > testquery
mas01ik@355 91 //floatstring 0 0.5 >> testquery
mas01ik@355 92 ivals[0]=2;
mas01ik@355 93 dvals[0]=-0; dvals[1]=0.5;
mas01ik@355 94 maketestfile("testquery",ivals,dvals,2);
mas01ik@355 95
mas01ik@355 96
mas01ik@355 97 /* query 1 */
mas01ik@355 98 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery > testoutput
mas01ik@355 99 //echo testfeature 1 0 0 > test-expected-output
mas01ik@355 100 //cmp testoutput test-expected-output
mas01ik@355 101 myadbquery.querytype="sequence";
mas01ik@355 102 myadbquery.feature="testquery";
mas01ik@355 103 myadbquery.sequencelength="1";
mas01ik@355 104 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 105 size=myadbqueryresult.sizeRlist;
mas01ik@355 106
mas01ik@355 107 /* check the test values */
mas01ik@355 108 if (size != 1) {returnval = -1;};
mas01ik@355 109 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,0)) {returnval = -1;};
mas01ik@355 110
mas01ik@355 111 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -n 1 > testoutput
mas01ik@355 112 //echo testfeature 0 0 0 > test-expected-output
mas01ik@355 113 //cmp testoutput test-expected-output
mas01ik@355 114 myadbquery.querytype="sequence";
mas01ik@355 115 myadbquery.feature="testquery";
mas01ik@355 116 myadbquery.sequencelength="1";
mas01ik@355 117 myadbquery.numpoints="1";
mas01ik@355 118 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 119 size=myadbqueryresult.sizeRlist;
mas01ik@355 120
mas01ik@355 121 /* check the test values */
mas01ik@355 122 if (size != 1) {returnval = -1;};
mas01ik@355 123 if (testoneresult(&myadbqueryresult,0,"testfeature",0,0,0)) {returnval = -1;};
mas01ik@355 124
mas01ik@355 125 //echo "query point (0.5,0.0)"
mas01ik@355 126 //intstring 2 > testquery
mas01ik@355 127 //floatstring 0.5 0 >> testquery
mas01ik@355 128 ivals[0]=2;
mas01ik@355 129 dvals[0]=0.5; dvals[1]=0.0;
mas01ik@355 130 maketestfile("testquery",ivals,dvals,2);
mas01ik@355 131
mas01ik@355 132 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery > testoutput
mas01ik@355 133 //echo testfeature 1 0 1 > test-expected-output
mas01ik@355 134 //cmp testoutput test-expected-output
mas01ik@355 135 myadbquery.querytype="sequence";
mas01ik@355 136 myadbquery.feature="testquery";
mas01ik@355 137 myadbquery.sequencelength="1";
mas01ik@355 138 myadbquery.numpoints=NULL;
mas01ik@355 139 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 140 size=myadbqueryresult.sizeRlist;
mas01ik@355 141
mas01ik@355 142 /* check the test values */
mas01ik@355 143 if (size != 1) {returnval = -1;};
mas01ik@355 144 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,1)) {returnval = -1;};
mas01ik@355 145
mas01ik@355 146 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -n 1 > testoutput
mas01ik@355 147 //echo testfeature 0 0 1 > test-expected-output
mas01ik@355 148 //cmp testoutput test-expected-output
mas01ik@355 149 myadbquery.querytype="sequence";
mas01ik@355 150 myadbquery.feature="testquery";
mas01ik@355 151 myadbquery.sequencelength="1";
mas01ik@355 152 myadbquery.numpoints="1";
mas01ik@355 153 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 154 size=myadbqueryresult.sizeRlist;
mas01ik@355 155
mas01ik@355 156 /* check the test values */
mas01ik@355 157 if (size != 1) {returnval = -1;};
mas01ik@355 158 if (testoneresult(&myadbqueryresult,0,"testfeature",0,0,1)) {returnval = -1;};
mas01ik@355 159
mas01ik@355 160
mas01ik@355 161
mas01ik@355 162 //# queries with power files might do something different
mas01ik@355 163 //echo "query point (0.0,0.5), p=-0.5"
mas01ik@355 164 //intstring 2 > testquery
mas01ik@355 165 //floatstring 0 0.5 >> testquery
mas01ik@355 166 //intstring 1 > testquerypower
mas01ik@355 167 //floatstring -0.5 >> testquerypower
mas01ik@355 168 ivals[0]=2;
mas01ik@355 169 dvals[0]=-0; dvals[1]=0.5;
mas01ik@355 170 maketestfile("testquery",ivals,dvals,2);
mas01ik@355 171 ivals[0]=1;
mas01ik@355 172 dvals[0]=-0.5;
mas01ik@355 173 maketestfile("testquerypower",ivals,dvals,1);
mas01ik@355 174
mas01ik@355 175 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --absolute-threshold=-1.4 > testoutput
mas01ik@355 176 //echo testfeature 1 0 0 > test-expected-output
mas01ik@355 177 //cmp testoutput test-expected-output
mas01ik@355 178 myadbquery.querytype="sequence";
mas01ik@355 179 myadbquery.feature="testquery";
mas01ik@355 180 myadbquery.sequencelength="1";
mas01ik@355 181 myadbquery.power="testquerypower";
mas01ik@355 182 myadbquery.numpoints=NULL;
mas01ik@355 183 myadbquery.absolute_threshold=-1.4;
mas01ik@355 184 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 185 size=myadbqueryresult.sizeRlist;
mas01ik@355 186
mas01ik@355 187 /* check the test values */
mas01ik@355 188 if (size != 1) {returnval = -1;};
mas01ik@355 189 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,0)) {returnval = -1;};
mas01ik@355 190
mas01ik@355 191 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --absolute-threshold=-0.6 > testoutput
mas01ik@355 192 //echo testfeature 0 0 0 > test-expected-output
mas01ik@355 193 //cmp testoutput test-expected-output
mas01ik@355 194 myadbquery.querytype="sequence";
mas01ik@355 195 myadbquery.feature="testquery";
mas01ik@355 196 myadbquery.sequencelength="1";
mas01ik@355 197 myadbquery.power="testquerypower";
mas01ik@355 198 myadbquery.numpoints=NULL;
mas01ik@355 199 myadbquery.absolute_threshold=-0.6;
mas01ik@355 200 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 201 size=myadbqueryresult.sizeRlist;
mas01ik@355 202
mas01ik@355 203 /* check the test values */
mas01ik@355 204 if (size != 1) {returnval = -1;};
mas01ik@355 205 if (testoneresult(&myadbqueryresult,0,"testfeature",0,0,0)) {returnval = -1;};
mas01ik@355 206
mas01ik@355 207
mas01ik@355 208 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --absolute-threshold=-0.2 > testoutput
mas01ik@355 209 //cat /dev/null > test-expected-output
mas01ik@355 210 //cmp testoutput test-expected-output
mas01ik@355 211
mas01ik@355 212 myadbquery.querytype="sequence";
mas01ik@355 213 myadbquery.feature="testquery";
mas01ik@355 214 myadbquery.sequencelength="1";
mas01ik@355 215 myadbquery.power="testquerypower";
mas01ik@355 216 myadbquery.numpoints=NULL;
mas01ik@355 217 myadbquery.absolute_threshold=-0.2;
mas01ik@355 218 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 219 size=myadbqueryresult.sizeRlist;
mas01ik@355 220 //dump_query(&myadbquery,&myadbqueryresult);
mas01ik@355 221
mas01ik@355 222 /* check the test values */
mas01ik@355 223 if (size != 0) {returnval = -1;};
mas01ik@355 224
mas01ik@355 225
mas01ik@355 226
mas01ik@355 227 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --relative-threshold=1 > testoutput
mas01ik@355 228 //echo testfeature 1 0 0 > test-expected-output
mas01ik@355 229 //cmp testoutput test-expected-output
mas01ik@355 230 myadbquery.querytype="sequence";
mas01ik@355 231 myadbquery.feature="testquery";
mas01ik@355 232 myadbquery.sequencelength="1";
mas01ik@355 233 myadbquery.power="testquerypower";
mas01ik@355 234 myadbquery.numpoints=NULL;
mas01ik@355 235 myadbquery.absolute_threshold=0;
mas01ik@355 236 myadbquery.relative_threshold=1;
mas01ik@355 237 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 238 size=myadbqueryresult.sizeRlist;
mas01ik@355 239
mas01ik@355 240 /* check the test values */
mas01ik@355 241 if (size != 1) {returnval = -1;};
mas01ik@355 242 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,0)) {returnval = -1;};
mas01ik@355 243
mas01ik@355 244
mas01ik@355 245 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --relative-threshold=0.2 > testoutput
mas01ik@355 246 //echo testfeature 0 0 0 > test-expected-output
mas01ik@355 247 //cmp testoutput test-expected-output
mas01ik@355 248 myadbquery.querytype="sequence";
mas01ik@355 249 myadbquery.feature="testquery";
mas01ik@355 250 myadbquery.sequencelength="1";
mas01ik@355 251 myadbquery.power="testquerypower";
mas01ik@355 252 myadbquery.numpoints=NULL;
mas01ik@355 253 myadbquery.absolute_threshold=0;
mas01ik@355 254 myadbquery.relative_threshold=0.2;
mas01ik@355 255 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 256 size=myadbqueryresult.sizeRlist;
mas01ik@355 257
mas01ik@355 258 /* check the test values */
mas01ik@355 259 if (size != 1) {returnval = -1;};
mas01ik@355 260 if (testoneresult(&myadbqueryresult,0,"testfeature",0,0,0)) {returnval = -1;};
mas01ik@355 261
mas01ik@355 262
mas01ik@355 263 //echo "query point (0.5,0.0), p=-0.5"
mas01ik@355 264 //intstring 2 > testquery
mas01ik@355 265 //floatstring 0.5 0 >> testquery
mas01ik@355 266 ivals[0]=2;
mas01ik@355 267 dvals[0]=0.5; dvals[1]=0.0;
mas01ik@355 268 maketestfile("testquery",ivals,dvals,2);
mas01ik@355 269
mas01ik@355 270
mas01ik@355 271 //audioDB -Q sequence -d testdb -f testquery -w testquerypower -l 1 --absolute-threshold -1.400000
mas01ik@355 272 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --absolute-threshold=-1.4 > testoutput
mas01ik@355 273 //echo testfeature 1 0 1 > test-expected-output
mas01ik@355 274 //cmp testoutput test-expected-output
mas01ik@355 275 myadbquery2.querytype="sequence";
mas01ik@355 276 myadbquery2.feature="testquery";
mas01ik@355 277 myadbquery2.sequencelength="1";
mas01ik@355 278 myadbquery2.power="testquerypower";
mas01ik@355 279 myadbquery2.numpoints=NULL;
mas01ik@355 280 myadbquery2.absolute_threshold=-1.4;
mas01ik@355 281 audiodb_query(mydbp,&myadbquery2,&myadbqueryresult2);
mas01ik@355 282 size=myadbqueryresult2.sizeRlist;
mas01ik@355 283
mas01ik@355 284 /* check the test values */
mas01ik@355 285 if (size != 1) {returnval = -1;};
mas01ik@355 286 if (testoneresult(&myadbqueryresult2,0,"testfeature",1,0,1)) {returnval = -1;};
mas01ik@355 287
mas01ik@355 288
mas01ik@355 289 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --absolute-threshold=-0.6 > testoutput
mas01ik@355 290 //echo testfeature 2 0 0 > test-expected-output
mas01ik@355 291 //cmp testoutput test-expected-output
mas01ik@355 292 myadbquery2.querytype="sequence";
mas01ik@355 293 myadbquery2.feature="testquery";
mas01ik@355 294 myadbquery2.sequencelength="1";
mas01ik@355 295 myadbquery2.power="testquerypower";
mas01ik@355 296 myadbquery2.numpoints=NULL;
mas01ik@355 297 myadbquery2.absolute_threshold=-0.6;
mas01ik@355 298 audiodb_query(mydbp,&myadbquery2,&myadbqueryresult2);
mas01ik@355 299 size=myadbqueryresult2.sizeRlist;
mas01ik@355 300
mas01ik@355 301 /* check the test values */
mas01ik@355 302 if (size != 1) {returnval = -1;};
mas01ik@355 303 if (testoneresult(&myadbqueryresult2,0,"testfeature",2,0,0)) {returnval = -1;};
mas01ik@355 304
mas01ik@355 305
mas01ik@355 306 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --absolute-threshold=-0.2 > testoutput
mas01ik@355 307 //cat /dev/null > test-expected-output
mas01ik@355 308 //cmp testoutput test-expected-output
mas01ik@355 309 myadbquery2.querytype="sequence";
mas01ik@355 310 myadbquery2.feature="testquery";
mas01ik@355 311 myadbquery2.sequencelength="1";
mas01ik@355 312 myadbquery2.power="testquerypower";
mas01ik@355 313 myadbquery2.numpoints=NULL;
mas01ik@355 314 myadbquery2.absolute_threshold=-0.2;
mas01ik@355 315 myadbquery2.relative_threshold=0.0;
mas01ik@355 316 audiodb_query(mydbp,&myadbquery2,&myadbqueryresult2);
mas01ik@355 317 size=myadbqueryresult2.sizeRlist;
mas01ik@355 318
mas01ik@355 319 /* check the test values */
mas01ik@355 320 if (size != 0) {returnval = -1;};
mas01ik@355 321
mas01ik@355 322
mas01ik@355 323 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --relative-threshold=1 > testoutput
mas01ik@355 324 //echo testfeature 1 0 1 > test-expected-output
mas01ik@355 325 //cmp testoutput test-expected-output
mas01ik@355 326 myadbquery2.querytype="sequence";
mas01ik@355 327 myadbquery2.feature="testquery";
mas01ik@355 328 myadbquery2.sequencelength="1";
mas01ik@355 329 myadbquery2.power="testquerypower";
mas01ik@355 330 myadbquery2.numpoints=NULL;
mas01ik@355 331 myadbquery2.absolute_threshold=0.0;
mas01ik@355 332 myadbquery2.relative_threshold=1;
mas01ik@355 333 audiodb_query(mydbp,&myadbquery2,&myadbqueryresult2);
mas01ik@355 334 size=myadbqueryresult2.sizeRlist;
mas01ik@355 335
mas01ik@355 336 /* check the test values */
mas01ik@355 337 if (size != 1) {returnval = -1;};
mas01ik@355 338 if (testoneresult(&myadbqueryresult2,0,"testfeature",1,0,1)) {returnval = -1;};
mas01ik@355 339
mas01ik@355 340
mas01ik@355 341
mas01ik@355 342 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -w testquerypower --relative-threshold=0.2 > testoutput
mas01ik@355 343 //echo testfeature 2 0 0 > test-expected-output
mas01ik@355 344 //cmp testoutput test-expected-output
mas01ik@355 345 myadbquery2.querytype="sequence";
mas01ik@355 346 myadbquery2.feature="testquery";
mas01ik@355 347 myadbquery2.sequencelength="1";
mas01ik@355 348 myadbquery2.power="testquerypower";
mas01ik@355 349 myadbquery2.numpoints=NULL;
mas01ik@355 350 myadbquery2.absolute_threshold=-0.0;
mas01ik@355 351 myadbquery2.relative_threshold=0.1;
mas01ik@355 352 audiodb_query(mydbp,&myadbquery2,&myadbqueryresult2);
mas01ik@355 353 size=myadbqueryresult2.sizeRlist;
mas01ik@355 354
mas01ik@355 355 /* check the test values */
mas01ik@355 356 if (size != 1) {returnval = -1;};
mas01ik@355 357 if (testoneresult(&myadbqueryresult2,0,"testfeature",2,0,0)) {returnval = -1;};
mas01ik@355 358
mas01ik@355 359 // printf("returnval:%d\n",returnval);
mas01ik@355 360 return(returnval);
mas01ik@355 361 }
mas01ik@355 362