annotate libtests/0033/prog1.c @ 417:c52561457dcd api-inversion

Add a text file explaining my plan for the accumulators.
author mas01cr
date Wed, 24 Dec 2008 10:54:44 +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 char * databasename="testdb";
mas01ik@355 26 adb_query_t myadbquery={0};
mas01ik@355 27 adb_queryresult_t myadbqueryresult={0};
mas01ik@355 28 int size=0;
mas01ik@355 29
mas01ik@355 30 /* remove old directory */
mas01ik@355 31 //if [ -f testdb ]; then rm -f testdb; fi
mas01ik@355 32 clean_remove_db(databasename);
mas01ik@355 33
mas01ik@355 34 /* create new db */
mas01ik@355 35 //${AUDIODB} -d testdb -N
mas01ik@355 36 mydbp=audiodb_create(databasename,0,0,0);
mas01ik@355 37
mas01ik@355 38 //intstring 2 > testfeature01
mas01ik@355 39 //floatstring 0 1 >> testfeature01
mas01ik@355 40 //intstring 2 > testfeature10
mas01ik@355 41 //floatstring 1 0 >> testfeature10
mas01ik@355 42 ivals[0]=2;
mas01ik@355 43 dvals[0]=0; dvals[1]=1;
mas01ik@355 44 maketestfile("testfeature01",ivals,dvals,2);
mas01ik@355 45 ivals[0]=2;
mas01ik@355 46 dvals[0]=1; dvals[1]=0;
mas01ik@355 47 maketestfile("testfeature10",ivals,dvals,2);
mas01ik@355 48
mas01ik@355 49 //${AUDIODB} -d testdb -I -f testfeature01
mas01ik@355 50 //${AUDIODB} -d testdb -I -f testfeature10
mas01ik@355 51 myinsert.features="testfeature01";
mas01ik@355 52 if(audiodb_insert(mydbp,&myinsert)) {returnval = -1; };
mas01ik@355 53 myinsert.features="testfeature10";
mas01ik@355 54 if(audiodb_insert(mydbp,&myinsert)) {returnval = -1; };
mas01ik@355 55
mas01ik@355 56 //# sequence queries require L2NORM
mas01ik@355 57 //${AUDIODB} -d testdb -L
mas01ik@355 58 if (audiodb_l2norm(mydbp)) {returnval=-1;};
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 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -R 5 > testoutput
mas01ik@355 68 //audioDB -Q sequence -d testdb -f testquery -R 5 -l 1
mas01ik@355 69 //echo testfeature01 1 > test-expected-output
mas01ik@355 70 //echo testfeature10 1 >> test-expected-output
mas01ik@355 71 //cmp testoutput test-expected-output
mas01ik@355 72 myadbquery.querytype="sequence";
mas01ik@355 73 myadbquery.feature="testquery";
mas01ik@355 74 myadbquery.sequencelength="1";
mas01ik@355 75 myadbquery.radius="5";
mas01ik@355 76 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 77 size=myadbqueryresult.sizeRlist;
mas01ik@355 78
mas01ik@355 79 /* check the test values */
mas01ik@355 80 if (size != 2) {returnval = -1;};
mas01ik@355 81 if (testoneradiusresult(&myadbqueryresult,0,"testfeature01",1)) {returnval = -1;};
mas01ik@355 82 if (testoneradiusresult(&myadbqueryresult,1,"testfeature10",1)) {returnval = -1;};
mas01ik@355 83
mas01ik@355 84 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -K /dev/null -R 5 > testoutput
mas01ik@355 85 //cat /dev/null > test-expected-output
mas01ik@355 86 //cmp testoutput test-expected-output
mas01ik@355 87 myadbquery.querytype="sequence";
mas01ik@355 88 myadbquery.feature="testquery";
mas01ik@355 89 myadbquery.keylist="/dev/null";
mas01ik@355 90 myadbquery.sequencelength="1";
mas01ik@355 91 myadbquery.radius="5";
mas01ik@355 92 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 93 size=myadbqueryresult.sizeRlist;
mas01ik@355 94
mas01ik@355 95 /* check the test values */
mas01ik@355 96 if (size != 0) {returnval = -1;};
mas01ik@355 97
mas01ik@355 98
mas01ik@355 99
mas01ik@355 100 //echo testfeature01 > testkl.txt
mas01ik@355 101 makekeylistfile("testkl.txt","testfeature01");
mas01ik@355 102 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -K testkl.txt -R 5 > testoutput
mas01ik@355 103 //echo testfeature01 1 > test-expected-output
mas01ik@355 104 //cmp testoutput test-expected-output
mas01ik@355 105 myadbquery.querytype="sequence";
mas01ik@355 106 myadbquery.feature="testquery";
mas01ik@355 107 myadbquery.keylist="testkl.txt";
mas01ik@355 108 myadbquery.sequencelength="1";
mas01ik@355 109 myadbquery.radius="5";
mas01ik@355 110 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 111 size=myadbqueryresult.sizeRlist;
mas01ik@355 112
mas01ik@355 113 /* check the test values */
mas01ik@355 114 if (size != 1) {returnval = -1;};
mas01ik@355 115 if (testoneradiusresult(&myadbqueryresult,0,"testfeature01",1)) {returnval = -1;};
mas01ik@355 116
mas01ik@355 117 //echo testfeature10 > testkl.txt
mas01ik@355 118 makekeylistfile("testkl.txt","testfeature10");
mas01ik@355 119 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -K testkl.txt -R 5 > testoutput
mas01ik@355 120 //echo testfeature10 1 > test-expected-output
mas01ik@355 121 //cmp testoutput test-expected-output
mas01ik@355 122 myadbquery.querytype="sequence";
mas01ik@355 123 myadbquery.feature="testquery";
mas01ik@355 124 myadbquery.keylist="testkl.txt";
mas01ik@355 125 myadbquery.sequencelength="1";
mas01ik@355 126 myadbquery.radius="5";
mas01ik@355 127 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 128 size=myadbqueryresult.sizeRlist;
mas01ik@355 129
mas01ik@355 130 /* check the test values */
mas01ik@355 131 if (size != 1) {returnval = -1;};
mas01ik@355 132 if (testoneradiusresult(&myadbqueryresult,0,"testfeature10",1)) {returnval = -1;};
mas01ik@355 133
mas01ik@355 134 //echo testfeature10 > testkl.txt
mas01ik@355 135 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -K testkl.txt -r 1 -R 5 > testoutput
mas01ik@355 136 //echo testfeature10 1 > test-expected-output
mas01ik@355 137 //cmp testoutput test-expected-output
mas01ik@355 138 myadbquery.querytype="sequence";
mas01ik@355 139 myadbquery.feature="testquery";
mas01ik@355 140 myadbquery.keylist="testkl.txt";
mas01ik@355 141 myadbquery.sequencelength="1";
mas01ik@355 142 myadbquery.radius="5";
mas01ik@355 143 myadbquery.resultlength="1";
mas01ik@355 144 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 145 size=myadbqueryresult.sizeRlist;
mas01ik@355 146
mas01ik@355 147 /* check the test values */
mas01ik@355 148 if (size != 1) {returnval = -1;};
mas01ik@355 149 if (testoneradiusresult(&myadbqueryresult,0,"testfeature10",1)) {returnval = -1;};
mas01ik@355 150
mas01ik@355 151
mas01ik@355 152 //# NB: one might be tempted to insert a test here for having both keys
mas01ik@355 153 //# in the keylist, but in non-database order, and then checking that
mas01ik@355 154 //# the result list is also in that non-database order. I think that
mas01ik@355 155 //# would be misguided, as the efficient way of dealing with such a
mas01ik@355 156 //# keylist is to advance as-sequentially-as-possible through the
mas01ik@355 157 //# database; it just so happens that our current implementation is not
mas01ik@355 158 //# so smart.
mas01ik@355 159
mas01ik@355 160 //echo "query point (0.5,0.0)"
mas01ik@355 161 //intstring 2 > testquery
mas01ik@355 162 //floatstring 0.5 0 >> testquery
mas01ik@355 163 ivals[0]=2;
mas01ik@355 164 dvals[0]=0.5; dvals[1]=0.0;
mas01ik@355 165 maketestfile("testquery",ivals,dvals,2);
mas01ik@355 166
mas01ik@355 167 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -R 5 > testoutput
mas01ik@355 168 //echo testfeature01 1 > test-expected-output
mas01ik@355 169 //echo testfeature10 1 >> test-expected-output
mas01ik@355 170 //cmp testoutput test-expected-output
mas01ik@355 171 myadbquery.querytype="sequence";
mas01ik@355 172 myadbquery.feature="testquery";
mas01ik@355 173 myadbquery.keylist=NULL;
mas01ik@355 174 myadbquery.sequencelength="1";
mas01ik@355 175 myadbquery.radius="5";
mas01ik@355 176 myadbquery.resultlength=NULL;
mas01ik@355 177 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 178 size=myadbqueryresult.sizeRlist;
mas01ik@355 179
mas01ik@355 180 /* check the test values */
mas01ik@355 181 if (size != 2) {returnval = -1;};
mas01ik@355 182 if (testoneradiusresult(&myadbqueryresult,0,"testfeature01",1)) {returnval = -1;};
mas01ik@355 183 if (testoneradiusresult(&myadbqueryresult,1,"testfeature10",1)) {returnval = -1;};
mas01ik@355 184
mas01ik@355 185 //echo testfeature10 > testkl.txt
mas01ik@355 186 //${AUDIODB} -d testdb -Q sequence -l 1 -f testquery -K testkl.txt -r 1 -R 5 > testoutput
mas01ik@355 187 //echo testfeature10 1 > test-expected-output
mas01ik@355 188 //cmp testoutput test-expected-output
mas01ik@355 189 myadbquery.querytype="sequence";
mas01ik@355 190 myadbquery.feature="testquery";
mas01ik@355 191 myadbquery.keylist="testkl.txt";
mas01ik@355 192 myadbquery.sequencelength="1";
mas01ik@355 193 myadbquery.radius="5";
mas01ik@355 194 myadbquery.resultlength="1";
mas01ik@355 195 audiodb_query(mydbp,&myadbquery,&myadbqueryresult);
mas01ik@355 196 size=myadbqueryresult.sizeRlist;
mas01ik@355 197
mas01ik@355 198 /* check the test values */
mas01ik@355 199 if (size != 1) {returnval = -1;};
mas01ik@355 200 if (testoneradiusresult(&myadbqueryresult,0,"testfeature10",1)) {returnval = -1;};
mas01ik@355 201
mas01ik@355 202
mas01ik@355 203 //fprintf(stderr,"returnval:%d\n",returnval);
mas01ik@355 204 return(returnval);
mas01ik@355 205 }
mas01ik@355 206