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@487
|
9 void clean_remove_db(char *dbname);
|
mas01ik@355
|
10 int testoneresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, double Dist,double Qpos,double Spos);
|
mas01ik@355
|
11 void maketestfile(char * filename, int * ivals, double * dvals, int dvalsize);
|
mas01cr@379
|
12 int testoneradiusresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, int count);
|
mas01ik@355
|
13 void makekeylistfile(char * filename, char * item);
|
mas01ik@355
|
14
|
mas01ik@355
|
15
|
mas01cr@487
|
16 void clean_remove_db(char * dbname) {
|
mas01cr@487
|
17 unlink(dbname);
|
mas01ik@355
|
18 }
|
mas01ik@355
|
19
|
mas01ik@355
|
20
|
mas01ik@355
|
21 void dump_query(adb_query_ptr adbq, adb_queryresult_ptr myadbqueryresult){
|
mas01ik@355
|
22
|
mas01ik@355
|
23 int size=0;
|
mas01ik@355
|
24 int i=0;
|
mas01ik@355
|
25
|
mas01ik@355
|
26 size=myadbqueryresult->sizeRlist;
|
mas01ik@355
|
27
|
mas01ik@355
|
28 printf("Dumping query:\n");
|
mas01ik@355
|
29 for(i=0; i<size; i++){
|
mas01ik@355
|
30 printf("\t'%s' query: Result %02d:%s is dist:%f qpos:%d spos:%d\n",
|
mas01ik@355
|
31 adbq->querytype,
|
mas01ik@355
|
32 i,
|
mas01ik@355
|
33 myadbqueryresult->Rlist[i],
|
mas01ik@355
|
34 myadbqueryresult->Dist[i],
|
mas01ik@355
|
35 myadbqueryresult->Qpos[i],
|
mas01ik@355
|
36 myadbqueryresult->Spos[i]
|
mas01ik@355
|
37 );
|
mas01ik@355
|
38 }
|
mas01ik@355
|
39 printf("\n");
|
mas01ik@355
|
40
|
mas01ik@355
|
41 }
|
mas01ik@355
|
42
|
mas01ik@355
|
43
|
mas01ik@355
|
44
|
mas01ik@355
|
45 int testoneresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, double Dist,double Qpos,double Spos){
|
mas01ik@355
|
46
|
mas01ik@355
|
47 int ret=0;
|
mas01ik@355
|
48 double tolerance=.0001;
|
mas01ik@355
|
49
|
mas01ik@355
|
50
|
mas01ik@355
|
51
|
mas01ik@355
|
52 if (strcmp(Rlist,myadbqueryresult->Rlist[i])){
|
mas01ik@355
|
53 ret=-1;
|
mas01ik@355
|
54 }
|
mas01ik@355
|
55
|
mas01ik@355
|
56
|
mas01cr@487
|
57 if (fabs((double)Dist - (double)myadbqueryresult->Dist[i]) > tolerance){
|
mas01ik@355
|
58 ret=-1;
|
mas01ik@355
|
59 }
|
mas01ik@355
|
60
|
mas01cr@487
|
61 if (fabs((double)Qpos - (double)myadbqueryresult->Qpos[i]) > tolerance){
|
mas01ik@355
|
62 ret=-1;
|
mas01ik@355
|
63 }
|
mas01ik@355
|
64
|
mas01cr@487
|
65 if (fabs((double)Spos - (double)myadbqueryresult->Spos[i]) > tolerance){
|
mas01ik@355
|
66 ret=-1;
|
mas01ik@355
|
67 }
|
mas01ik@355
|
68
|
mas01ik@355
|
69 return ret;
|
mas01ik@355
|
70 }
|
mas01ik@355
|
71
|
mas01ik@355
|
72
|
mas01cr@379
|
73 int testoneradiusresult(adb_queryresult_ptr myadbqueryresult, int i, char * Rlist, int count){
|
mas01ik@355
|
74
|
mas01ik@355
|
75 int ret=0;
|
mas01ik@355
|
76
|
mas01ik@355
|
77 if (strcmp(Rlist,myadbqueryresult->Rlist[i])){
|
mas01ik@355
|
78 ret=-1;
|
mas01ik@355
|
79 }
|
mas01ik@355
|
80
|
mas01cr@379
|
81 /* KLUDGE: at the moment, the structure returned from "sequence"
|
mas01cr@379
|
82 queries with a radius has two unused fields, Dist and Qpos, and
|
mas01cr@379
|
83 the Spos field is punned to indicate the count of hits from
|
mas01cr@379
|
84 that track. This is really ugly and needs to die. */
|
mas01cr@379
|
85 if (count != myadbqueryresult->Spos[i]) {
|
mas01ik@355
|
86 ret=-1;
|
mas01ik@355
|
87 }
|
mas01ik@355
|
88
|
mas01ik@355
|
89 return ret;
|
mas01ik@355
|
90 }
|
mas01ik@355
|
91
|
mas01ik@355
|
92 void maketestfile(char * filename, int * ivals, double * dvals, int dvalsize) {
|
mas01ik@355
|
93
|
mas01ik@355
|
94 FILE * myfile;
|
mas01ik@355
|
95
|
mas01ik@355
|
96 myfile=fopen(filename,"w");
|
mas01ik@355
|
97 fwrite(ivals,sizeof(int),1,myfile);
|
mas01ik@355
|
98 fwrite(dvals,sizeof(double),dvalsize,myfile);
|
mas01ik@355
|
99 fflush(myfile);
|
mas01ik@355
|
100 fclose(myfile);
|
mas01ik@355
|
101
|
mas01ik@355
|
102 /* should probably test for success, but then it is a test suite already... */
|
mas01ik@355
|
103 }
|
mas01ik@355
|
104
|
mas01ik@355
|
105 void makekeylistfile(char * filename, char * item){
|
mas01ik@355
|
106
|
mas01ik@355
|
107 FILE * myfile;
|
mas01ik@355
|
108
|
mas01ik@355
|
109 myfile=fopen(filename,"w");
|
mas01ik@355
|
110 fprintf(myfile,"%s\n",item);
|
mas01ik@355
|
111 fflush(myfile);
|
mas01ik@355
|
112 fclose(myfile);
|
mas01ik@355
|
113
|
mas01ik@355
|
114 }
|