1 #include "ntdb-source.h"
2 #include "tap-interface.h"
5 static int drop_count(struct ntdb_context
*ntdb
, unsigned int *count
)
12 static int set_found(struct ntdb_context
*ntdb
, bool found
[3])
16 if (strcmp(ntdb_name(ntdb
), "run-ntdb_foreach0.ntdb") == 0)
18 else if (strcmp(ntdb_name(ntdb
), "run-ntdb_foreach1.ntdb") == 0)
20 else if (strcmp(ntdb_name(ntdb
), "run-ntdb_foreach2.ntdb") == 0)
31 int main(int argc
, char *argv
[])
33 unsigned int i
, count
;
35 struct ntdb_context
*ntdb0
, *ntdb1
, *ntdb
;
36 int flags
[] = { NTDB_DEFAULT
, NTDB_NOMMAP
,
37 NTDB_CONVERT
, NTDB_NOMMAP
|NTDB_CONVERT
};
39 plan_tests(sizeof(flags
) / sizeof(flags
[0]) * 8);
40 for (i
= 0; i
< sizeof(flags
) / sizeof(flags
[0]); i
++) {
41 ntdb0
= ntdb_open("run-ntdb_foreach0.ntdb",
42 flags
[i
]|MAYBE_NOSYNC
,
43 O_RDWR
|O_CREAT
|O_TRUNC
, 0600, &tap_log_attr
);
44 ntdb1
= ntdb_open("run-ntdb_foreach1.ntdb",
45 flags
[i
]|MAYBE_NOSYNC
,
46 O_RDWR
|O_CREAT
|O_TRUNC
, 0600, &tap_log_attr
);
47 ntdb
= ntdb_open("run-ntdb_foreach2.ntdb",
48 flags
[i
]|MAYBE_NOSYNC
,
49 O_RDWR
|O_CREAT
|O_TRUNC
, 0600, &tap_log_attr
);
51 memset(found
, 0, sizeof(found
));
52 ntdb_foreach(set_found
, found
);
53 ok1(found
[0] && found
[1] && found
[2]);
55 /* Test premature iteration termination */
57 ntdb_foreach(drop_count
, &count
);
61 memset(found
, 0, sizeof(found
));
62 ntdb_foreach(set_found
, found
);
63 ok1(found
[0] && !found
[1] && found
[2]);
66 memset(found
, 0, sizeof(found
));
67 ntdb_foreach(set_found
, found
);
68 ok1(found
[0] && !found
[1] && !found
[2]);
70 ntdb1
= ntdb_open("run-ntdb_foreach1.ntdb",
71 flags
[i
]|MAYBE_NOSYNC
,
72 O_RDWR
, 0600, &tap_log_attr
);
73 memset(found
, 0, sizeof(found
));
74 ntdb_foreach(set_found
, found
);
75 ok1(found
[0] && found
[1] && !found
[2]);
78 memset(found
, 0, sizeof(found
));
79 ntdb_foreach(set_found
, found
);
80 ok1(!found
[0] && found
[1] && !found
[2]);
83 memset(found
, 0, sizeof(found
));
84 ntdb_foreach(set_found
, found
);
85 ok1(!found
[0] && !found
[1] && !found
[2]);
86 ok1(tap_log_messages
== 0);