annotate libtests/test_utils_lib.h @ 489:4cb6c611f812 api-inversion

Begin removing uses of audiodb_query() audiodb_query() is actually an unsupportable interface. It requires access to the filesystem, does not (and cannot) actually support whole swathes of functionality, is only implementable using code that is no longer part of the core of audioDB (reporter.h), is in the way of fixing memory leaks in the SOAP server, and is horrible to use to boot. So, begin converting the libtests uses of audiodb_query() to audio_query_spec(). In the process, go through the test code and remove useless comments, pointless variables, and commented-out bits of shell scripts.
author mas01cr
date Sat, 10 Jan 2009 15:32:53 +0000
parents f4dc8e47ee37
children 1950d76be128
rev   line source
mas01cr@487 1 #include <sys/types.h>
mas01cr@487 2 #include <sys/stat.h>
mas01cr@487 3 #include <math.h>
mas01cr@487 4 #include <unistd.h>
mas01cr@487 5 #include <fcntl.h>
mas01cr@487 6 #include <string.h>
mas01cr@487 7 #include <stdio.h>
mas01cr@487 8
mas01cr@489 9 #define TESTDB "testdb"
mas01cr@489 10
mas01cr@487 11 void clean_remove_db(char *dbname);
mas01ik@355 12 int testoneresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, double Dist,double Qpos,double Spos);
mas01ik@355 13 void maketestfile(char * filename, int * ivals, double * dvals, int dvalsize);
mas01cr@379 14 int testoneradiusresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, int count);
mas01ik@355 15 void makekeylistfile(char * filename, char * item);
mas01ik@355 16
mas01cr@487 17 void clean_remove_db(char * dbname) {
mas01cr@487 18 unlink(dbname);
mas01ik@355 19 }
mas01ik@355 20
mas01ik@355 21 int testoneresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, double Dist,double Qpos,double Spos){
mas01ik@355 22
mas01ik@355 23 int ret=0;
mas01ik@355 24 double tolerance=.0001;
mas01ik@355 25
mas01ik@355 26
mas01ik@355 27
mas01ik@355 28 if (strcmp(Rlist,myadbqueryresult->Rlist[i])){
mas01ik@355 29 ret=-1;
mas01ik@355 30 }
mas01ik@355 31
mas01ik@355 32
mas01cr@487 33 if (fabs((double)Dist - (double)myadbqueryresult->Dist[i]) > tolerance){
mas01ik@355 34 ret=-1;
mas01ik@355 35 }
mas01ik@355 36
mas01cr@487 37 if (fabs((double)Qpos - (double)myadbqueryresult->Qpos[i]) > tolerance){
mas01ik@355 38 ret=-1;
mas01ik@355 39 }
mas01ik@355 40
mas01cr@487 41 if (fabs((double)Spos - (double)myadbqueryresult->Spos[i]) > tolerance){
mas01ik@355 42 ret=-1;
mas01ik@355 43 }
mas01ik@355 44
mas01ik@355 45 return ret;
mas01ik@355 46 }
mas01ik@355 47
mas01ik@355 48
mas01cr@379 49 int testoneradiusresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, int count){
mas01ik@355 50
mas01ik@355 51 int ret=0;
mas01ik@355 52
mas01ik@355 53 if (strcmp(Rlist,myadbqueryresult->Rlist[i])){
mas01ik@355 54 ret=-1;
mas01ik@355 55 }
mas01ik@355 56
mas01cr@379 57 /* KLUDGE: at the moment, the structure returned from "sequence"
mas01cr@379 58 queries with a radius has two unused fields, Dist and Qpos, and
mas01cr@379 59 the Spos field is punned to indicate the count of hits from
mas01cr@379 60 that track. This is really ugly and needs to die. */
mas01cr@379 61 if (count != myadbqueryresult->Spos[i]) {
mas01ik@355 62 ret=-1;
mas01ik@355 63 }
mas01ik@355 64
mas01ik@355 65 return ret;
mas01ik@355 66 }
mas01ik@355 67
mas01ik@355 68 void maketestfile(char * filename, int * ivals, double * dvals, int dvalsize) {
mas01ik@355 69
mas01ik@355 70 FILE * myfile;
mas01ik@355 71
mas01ik@355 72 myfile=fopen(filename,"w");
mas01ik@355 73 fwrite(ivals,sizeof(int),1,myfile);
mas01ik@355 74 fwrite(dvals,sizeof(double),dvalsize,myfile);
mas01ik@355 75 fflush(myfile);
mas01ik@355 76 fclose(myfile);
mas01ik@355 77
mas01ik@355 78 /* should probably test for success, but then it is a test suite already... */
mas01ik@355 79 }
mas01ik@355 80
mas01ik@355 81 void makekeylistfile(char * filename, char * item){
mas01ik@355 82
mas01ik@355 83 FILE * myfile;
mas01ik@355 84
mas01ik@355 85 myfile=fopen(filename,"w");
mas01ik@355 86 fprintf(myfile,"%s\n",item);
mas01ik@355 87 fflush(myfile);
mas01ik@355 88 fclose(myfile);
mas01ik@355 89
mas01ik@355 90 }
mas01cr@489 91
mas01cr@489 92 int result_position(adb_query_results_t *r, const char *key, float dist, uint32_t qpos, uint32_t ipos) {
mas01cr@489 93 for(uint32_t k = 0; k < r->nresults; k++) {
mas01cr@489 94 adb_result_t result = r->results[k];
mas01cr@489 95 if((dist == result.dist) && (qpos == result.qpos) &&
mas01cr@489 96 (ipos == result.ipos) && !(strcmp(key, result.key))) {
mas01cr@489 97 return k;
mas01cr@489 98 }
mas01cr@489 99 }
mas01cr@489 100 return -1;
mas01cr@489 101 }
mas01cr@489 102
mas01cr@489 103 #define result_present_or_fail(r, k, d, q, i) \
mas01cr@489 104 if(result_position(r, k, d, q, i) < 0) return 1;
mas01cr@489 105