]> FriiDump Source - friidump.git/blob - tests/test_redump_dat_resolver.c
Record A102 and B101 live profile evidence
[friidump.git] / tests / test_redump_dat_resolver.c
1 #include "redump_dat.h"
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <string.h>
6
7 static const char *optional_arg(const char *arg) {
8     if (!arg || strcmp(arg, "-") == 0)
9         return NULL;
10     return arg;
11 }
12
13 int main(int argc, char **argv) {
14     const char *explicit_dir;
15     const char *executable_dir;
16     const char *basename;
17     const char *expected_path;
18     int expected_found;
19     int found;
20     char resolved[1024];
21
22     if (argc != 6) {
23         fprintf(stderr,
24                 "Usage: %s <explicit-dir|-> <executable-dir|-> "
25                 "<basename> <expected-path> <expected-found-0-or-1>\n",
26                 argc > 0 ? argv[0] : "test_redump_dat_resolver");
27         return 64;
28     }
29
30     explicit_dir = optional_arg(argv[1]);
31     executable_dir = optional_arg(argv[2]);
32     basename = argv[3];
33     expected_path = argv[4];
34     expected_found = atoi(argv[5]) ? 1 : 0;
35
36     memset(resolved, 0, sizeof(resolved));
37     found = redump_resolve_dat_path(
38         explicit_dir,
39         executable_dir,
40         basename,
41         resolved,
42         sizeof(resolved)
43     ) ? 1 : 0;
44
45     printf("resolved=%s\n", resolved);
46     printf("found=%d\n", found);
47
48     if (found != expected_found) {
49         fprintf(stderr, "Found-state mismatch: expected %d, observed %d\n",
50                 expected_found, found);
51         return 1;
52     }
53
54     if (strcmp(resolved, expected_path) != 0) {
55         fprintf(stderr, "Path mismatch:\n  expected: %s\n  observed: %s\n",
56                 expected_path, resolved);
57         return 2;
58     }
59
60     return 0;
61 }