1 #include "../common/tdb_private.h"
2 #include "../common/io.c"
3 #include "../common/tdb.c"
4 #include "../common/lock.c"
5 #include "../common/freelist.c"
6 #include "../common/traverse.c"
7 #include "../common/transaction.c"
8 #include "../common/error.c"
9 #include "../common/open.c"
10 #include "../common/check.c"
11 #include "../common/hash.c"
12 #include "../common/rescue.c"
13 #include "../common/mutex.c"
14 #include "tap-interface.h"
15 #include <stdlib.h>
16 #include "logging.h"
17 
18 #define NUM 20
19 
20 /* Binary searches are deceptively simple: easy to screw up! */
main(int argc,char * argv[])21 int main(int argc, char *argv[])
22 {
23 	unsigned int i, j, n;
24 	struct found f[NUM+1];
25 	struct found_table table;
26 
27 	/* Set up array for searching. */
28 	for (i = 0; i < NUM+1; i++) {
29 		f[i].head = i * 3;
30 	}
31 	table.arr = f;
32 
33 	for (i = 0; i < NUM; i++) {
34 		table.num = i;
35 		for (j = 0; j < (i + 2) * 3; j++) {
36 			n = find_entry(&table, j);
37 			ok1(n <= i);
38 
39 			/* If we were searching for something too large... */
40 			if (j > i*3)
41 				ok1(n == i);
42 			else {
43 				/* It must give us something after j */
44 				ok1(f[n].head >= j);
45 				ok1(n == 0 || f[n-1].head < j);
46 			}
47 		}
48 	}
49 
50 	return exit_status();
51 }
52