Line data Source code
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! */
21 1 : 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 22 : for (i = 0; i < NUM+1; i++) {
29 21 : f[i].head = i * 3;
30 : }
31 1 : table.arr = f;
32 :
33 21 : for (i = 0; i < NUM; i++) {
34 20 : table.num = i;
35 710 : for (j = 0; j < (i + 2) * 3; j++) {
36 690 : n = find_entry(&table, j);
37 690 : ok1(n <= i);
38 :
39 : /* If we were searching for something too large... */
40 690 : if (j > i*3)
41 100 : ok1(n == i);
42 : else {
43 : /* It must give us something after j */
44 590 : ok1(f[n].head >= j);
45 590 : ok1(n == 0 || f[n-1].head < j);
46 : }
47 : }
48 : }
49 :
50 1 : return exit_status();
51 : }
|