mas01cr@487: #include mas01cr@487: #include mas01cr@487: #include mas01cr@487: #include mas01cr@487: #include mas01cr@487: #include mas01cr@487: #include mas01cr@487: mas01cr@487: void clean_remove_db(char *dbname); mas01ik@355: int testoneresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, double Dist,double Qpos,double Spos); mas01ik@355: void maketestfile(char * filename, int * ivals, double * dvals, int dvalsize); mas01cr@379: int testoneradiusresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, int count); mas01ik@355: void makekeylistfile(char * filename, char * item); mas01ik@355: mas01ik@355: mas01cr@487: void clean_remove_db(char * dbname) { mas01cr@487: unlink(dbname); mas01ik@355: } mas01ik@355: mas01ik@355: mas01ik@355: void dump_query(adb_query_ptr adbq, adb_queryresult_ptr myadbqueryresult){ mas01ik@355: mas01ik@355: int size=0; mas01ik@355: int i=0; mas01ik@355: mas01ik@355: size=myadbqueryresult->sizeRlist; mas01ik@355: mas01ik@355: printf("Dumping query:\n"); mas01ik@355: for(i=0; iquerytype, mas01ik@355: i, mas01ik@355: myadbqueryresult->Rlist[i], mas01ik@355: myadbqueryresult->Dist[i], mas01ik@355: myadbqueryresult->Qpos[i], mas01ik@355: myadbqueryresult->Spos[i] mas01ik@355: ); mas01ik@355: } mas01ik@355: printf("\n"); mas01ik@355: mas01ik@355: } mas01ik@355: mas01ik@355: mas01ik@355: mas01ik@355: int testoneresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, double Dist,double Qpos,double Spos){ mas01ik@355: mas01ik@355: int ret=0; mas01ik@355: double tolerance=.0001; mas01ik@355: mas01ik@355: mas01ik@355: mas01ik@355: if (strcmp(Rlist,myadbqueryresult->Rlist[i])){ mas01ik@355: ret=-1; mas01ik@355: } mas01ik@355: mas01ik@355: mas01cr@487: if (fabs((double)Dist - (double)myadbqueryresult->Dist[i]) > tolerance){ mas01ik@355: ret=-1; mas01ik@355: } mas01ik@355: mas01cr@487: if (fabs((double)Qpos - (double)myadbqueryresult->Qpos[i]) > tolerance){ mas01ik@355: ret=-1; mas01ik@355: } mas01ik@355: mas01cr@487: if (fabs((double)Spos - (double)myadbqueryresult->Spos[i]) > tolerance){ mas01ik@355: ret=-1; mas01ik@355: } mas01ik@355: mas01ik@355: return ret; mas01ik@355: } mas01ik@355: mas01ik@355: mas01cr@379: int testoneradiusresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, int count){ mas01ik@355: mas01ik@355: int ret=0; mas01ik@355: mas01ik@355: if (strcmp(Rlist,myadbqueryresult->Rlist[i])){ mas01ik@355: ret=-1; mas01ik@355: } mas01ik@355: mas01cr@379: /* KLUDGE: at the moment, the structure returned from "sequence" mas01cr@379: queries with a radius has two unused fields, Dist and Qpos, and mas01cr@379: the Spos field is punned to indicate the count of hits from mas01cr@379: that track. This is really ugly and needs to die. */ mas01cr@379: if (count != myadbqueryresult->Spos[i]) { mas01ik@355: ret=-1; mas01ik@355: } mas01ik@355: mas01ik@355: return ret; mas01ik@355: } mas01ik@355: mas01ik@355: void maketestfile(char * filename, int * ivals, double * dvals, int dvalsize) { mas01ik@355: mas01ik@355: FILE * myfile; mas01ik@355: mas01ik@355: myfile=fopen(filename,"w"); mas01ik@355: fwrite(ivals,sizeof(int),1,myfile); mas01ik@355: fwrite(dvals,sizeof(double),dvalsize,myfile); mas01ik@355: fflush(myfile); mas01ik@355: fclose(myfile); mas01ik@355: mas01ik@355: /* should probably test for success, but then it is a test suite already... */ mas01ik@355: } mas01ik@355: mas01ik@355: void makekeylistfile(char * filename, char * item){ mas01ik@355: mas01ik@355: FILE * myfile; mas01ik@355: mas01ik@355: myfile=fopen(filename,"w"); mas01ik@355: fprintf(myfile,"%s\n",item); mas01ik@355: fflush(myfile); mas01ik@355: fclose(myfile); mas01ik@355: mas01ik@355: }