annotate libtests/0012/prog1.c @ 462:f689510baaf4 api-inversion

Simplify audioDB::query_loop_points. Using the new functions audiodb_track_id_datum() and audiodb_datum_qpointers(), much of the body of the method disappears. Of course, we've probably introduced some inefficiencies and extra memory copies, but I'm fairly sure that this method is going to be dominated by disk i/o time anyway, so it doesn't matter.
author mas01cr
date Tue, 30 Dec 2008 15:38:55 +0000
parents 94c18f128ce8
children e072aa1611f5 342822c2d49a
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 0.5 >> testfeature
mas01ik@355 44 //floatstring 0.5 0 >> testfeature
mas01ik@355 45 ivals[0]=2;
mas01ik@355 46 dvals[0]=0; dvals[1]=0.5; dvals[2]=0.5; dvals[3]=0;
mas01ik@355 47 maketestfile("testfeature",ivals,dvals,4);
mas01ik@355 48
mas01ik@355 49 //# sequence queries require L2NORM; check that we can still insert
mas01ik@355 50 //# after turning flag on
mas01ik@355 51 //${AUDIODB} -d testdb -L
mas01ik@355 52 if(audiodb_l2norm(mydbp)){
mas01ik@355 53 returnval=-1;
mas01ik@355 54 };
mas01ik@355 55
mas01ik@355 56 //${AUDIODB} -d testdb -I -f testfeature
mas01ik@355 57 myinsert.features="testfeature";
mas01ik@355 58 myerr=audiodb_insert(mydbp,&myinsert);
mas01ik@355 59
mas01ik@355 60 //echo "query point (0.0,0.5)"
mas01ik@355 61 //intstring 2 > testquery
mas01ik@355 62 //floatstring 0 0.5 >> testquery
mas01ik@355 63 ivals[0]=2;
mas01ik@355 64 dvals[0]=0; dvals[1]=0.5;
mas01ik@355 65 maketestfile("testquery",ivals,dvals,2);
mas01ik@355 66
mas01ik@355 67 /* query 1 */
mas01ik@355 68 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery > testoutput
mas01ik@355 69 //echo testfeature 1 0 0 > test-expected-output
mas01ik@355 70 //cmp testoutput test-expected-output
mas01ik@355 71 myadbquery.querytype="sequence";
mas01ik@355 72 myadbquery.feature="testquery";
mas01ik@355 73 myadbquery.sequencelength="1";
mas01ik@355 74 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 75 size=myadbqueryresult.sizeRlist;
mas01ik@355 76
mas01ik@355 77 /* check the test values */
mas01ik@355 78 if (size != 1) {returnval = -1;};
mas01ik@355 79 if (testoneresult(&myadbqueryresult,0,"testfeature",1,0,0)) {returnval = -1;};
mas01ik@355 80
mas01ik@355 81
mas01ik@355 82 /* query 2 */
mas01ik@355 83 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -n 1 > testoutput
mas01ik@355 84 //echo testfeature 0 0 0 > test-expected-output
mas01ik@355 85 //cmp testoutput test-expected-output
mas01ik@355 86 myadbquery.querytype="sequence";
mas01ik@355 87 myadbquery.feature="testquery";
mas01ik@355 88 myadbquery.sequencelength="1";
mas01ik@355 89 myadbquery.numpoints="1";
mas01ik@355 90 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 91 size=myadbqueryresult.sizeRlist;
mas01ik@355 92
mas01ik@355 93 /* check the test values */
mas01ik@355 94 if (size != 1) {returnval = -1;};
mas01ik@355 95 if (testoneresult(&myadbqueryresult,0,"testfeature",0,0,0)) {returnval = -1;};
mas01ik@355 96
mas01ik@355 97 /* testquery */
mas01ik@355 98 //echo "query point (0.5,0.0)"
mas01ik@355 99 //intstring 2 > testquery
mas01ik@355 100 //floatstring 0.5 0 >> testquery
mas01ik@355 101 /* create testquery file */
mas01ik@355 102 ivals[0]=2;
mas01ik@355 103 dvals[0]=0.5; dvals[1]=0.0; dvals[2]=0; dvals[3]=0;
mas01ik@355 104 maketestfile("testquery",ivals,dvals,2);
mas01ik@355 105
mas01ik@355 106 /* query 3 file */
mas01ik@355 107 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery > testoutput
mas01ik@355 108 //echo testfeature 1 0 1 > test-expected-output
mas01ik@355 109 //cmp testoutput test-expected-output
mas01ik@355 110 myadbquery2.querytype="sequence";
mas01ik@355 111 myadbquery2.feature="testquery";
mas01ik@355 112 myadbquery2.sequencelength="1";
mas01ik@355 113 audiodb_query(mydbp,&myadbquery2,&myadbqueryresult2);
mas01ik@355 114 size=myadbqueryresult2.sizeRlist;
mas01ik@355 115
mas01ik@355 116 /* check the test values */
mas01ik@355 117 if (size != 1) {returnval = -1;};
mas01ik@355 118 if (testoneresult(&myadbqueryresult2,0,"testfeature",1,0,1)) {returnval = -1;};
mas01ik@355 119
mas01ik@355 120 /* query 4 */
mas01ik@355 121 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -n 1 > testoutput
mas01ik@355 122 //echo testfeature 0 0 1 > test-expected-output
mas01ik@355 123 //cmp testoutput test-expected-output
mas01ik@355 124 myadbquery2.querytype="sequence";
mas01ik@355 125 myadbquery2.feature="testquery";
mas01ik@355 126 myadbquery2.sequencelength="1";
mas01ik@355 127 myadbquery2.numpoints="1";
mas01ik@355 128 audiodb_query(mydbp,&myadbquery2,&myadbqueryresult2);
mas01ik@355 129 size=myadbqueryresult2.sizeRlist;
mas01ik@355 130
mas01ik@355 131 /* check the test values */
mas01ik@355 132 if (size != 1) {returnval = -1;};
mas01ik@355 133 if (testoneresult(&myadbqueryresult2,0,"testfeature",0,0,1)) {returnval = -1;};
mas01ik@355 134
mas01ik@355 135
mas01ik@355 136 return(returnval);
mas01ik@355 137 }
mas01ik@355 138