1 #include <ccan/cdump/cdump_parse.c>
2 #include <ccan/tap/tap.h>
8 static size_t diffoff(const char *a, const char *b)
12 for (i = 0; a[i]; i++)
18 static char *read_file(const void *ctx, const char *fname)
20 int fd = open(fname, O_RDONLY);
21 off_t len = lseek(fd, 0, SEEK_END);
22 char *ret = talloc_array(ctx, char, len + 1);
23 lseek(fd, 0, SEEK_SET);
30 int main(int argc, char *argv[])
32 char *ret, *decls, *defs;
33 char *toplevel = talloc_strdup(NULL, "toplevel");
34 char *header, *definitions, *declarations;
37 header = read_file(toplevel, "test/test_header.h");
38 declarations = read_file(toplevel, "test/example_generated-decls.h");
39 definitions = read_file(toplevel, "test/example_generated-defs.h");
41 ret = cdump_parse(toplevel, header, &decls, &defs);
43 ok(streq(decls, declarations),
44 "Declarations differ at %zu: ...'%.*s' vs ...'%.*s'",
45 diffoff(decls, declarations),
46 30, decls + diffoff(decls, declarations),
47 30, declarations + diffoff(decls, declarations));
48 ok(streq(defs, definitions),
49 "Definitions differ at %zu: ...'%.*s' vs ...'%.*s'",
50 diffoff(defs, definitions),
51 30, defs + diffoff(defs, definitions),
52 30, definitions + diffoff(defs, definitions));
54 ok1(talloc_find_parent_byname(decls, "toplevel") == toplevel);
55 ok1(talloc_find_parent_byname(defs, "toplevel") == toplevel);
57 talloc_free(toplevel);