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);