annotate libtests/test_utils_lib.h @ 497:9d8aee621afb
api-inversion
More libtests fixups.
Include audiodb_close() calls everywhere (whoops).
Add the facility to run tests under valgrind. Unfortunately the
error-exitcode flag doesn't actually cause an error exit if the only
thing wrong is memory leaks, but it will if there are actual memory
errors, which is a start.
author |
mas01cr |
date |
Sat, 10 Jan 2009 16:07:43 +0000 |
parents |
c291e9201a3c |
children |
|
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@495
|
8 #include <stdlib.h>
|
mas01cr@487
|
9
|
mas01cr@489
|
10 #define TESTDB "testdb"
|
mas01cr@489
|
11
|
mas01cr@487
|
12 void clean_remove_db(char * dbname) {
|
mas01cr@487
|
13 unlink(dbname);
|
mas01ik@355
|
14 }
|
mas01ik@355
|
15
|
mas01cr@495
|
16 void maketestfile(const char *path, int dim, double *doubles, int ndoubles) {
|
mas01cr@495
|
17 FILE *file;
|
mas01ik@355
|
18
|
mas01cr@495
|
19 file = fopen(path, "w");
|
mas01cr@495
|
20 fwrite(&dim, sizeof(int), 1, file);
|
mas01cr@495
|
21 fwrite(doubles, sizeof(double), ndoubles, file);
|
mas01cr@495
|
22 fflush(file);
|
mas01cr@495
|
23 fclose(file);
|
mas01ik@355
|
24 }
|
mas01cr@489
|
25
|
mas01cr@493
|
26 int close_enough(double a, double b, double epsilon) {
|
mas01cr@493
|
27 return (fabs(a-b) < epsilon);
|
mas01cr@493
|
28 }
|
mas01cr@493
|
29
|
mas01cr@489
|
30 int result_position(adb_query_results_t *r, const char *key, float dist, uint32_t qpos, uint32_t ipos) {
|
mas01cr@489
|
31 for(uint32_t k = 0; k < r->nresults; k++) {
|
mas01cr@489
|
32 adb_result_t result = r->results[k];
|
mas01cr@493
|
33 if(close_enough(dist, result.dist, 1e-4) && (qpos == result.qpos) &&
|
mas01cr@489
|
34 (ipos == result.ipos) && !(strcmp(key, result.key))) {
|
mas01cr@489
|
35 return k;
|
mas01cr@489
|
36 }
|
mas01cr@489
|
37 }
|
mas01cr@489
|
38 return -1;
|
mas01cr@489
|
39 }
|
mas01cr@489
|
40
|
mas01cr@489
|
41 #define result_present_or_fail(r, k, d, q, i) \
|
mas01cr@489
|
42 if(result_position(r, k, d, q, i) < 0) return 1;
|