1 | // SPDX-License-Identifier: GPL-2.0 |
2 | #include <string.h> |
3 | #include <stdlib.h> |
4 | #include <stdio.h> |
5 | #include "tests.h" |
6 | #include "session.h" |
7 | #include "debug.h" |
8 | #include "demangle-ocaml.h" |
9 | |
10 | static int test__demangle_ocaml(struct test_suite *test __maybe_unused, int subtest __maybe_unused) |
11 | { |
12 | int ret = TEST_OK; |
13 | char *buf = NULL; |
14 | size_t i; |
15 | |
16 | struct { |
17 | const char *mangled, *demangled; |
18 | } test_cases[] = { |
19 | { "main" , |
20 | NULL }, |
21 | { "camlStdlib__array__map_154" , |
22 | "Stdlib.array.map_154" }, |
23 | { "camlStdlib__anon_fn$5bstdlib$2eml$3a334$2c0$2d$2d54$5d_1453" , |
24 | "Stdlib.anon_fn[stdlib.ml:334,0--54]_1453" }, |
25 | { "camlStdlib__bytes__$2b$2b_2205" , |
26 | "Stdlib.bytes.++_2205" }, |
27 | }; |
28 | |
29 | for (i = 0; i < ARRAY_SIZE(test_cases); i++) { |
30 | buf = ocaml_demangle_sym(test_cases[i].mangled); |
31 | if ((buf == NULL && test_cases[i].demangled != NULL) |
32 | || (buf != NULL && test_cases[i].demangled == NULL) |
33 | || (buf != NULL && strcmp(buf, test_cases[i].demangled))) { |
34 | pr_debug("FAILED: %s: %s != %s\n" , test_cases[i].mangled, |
35 | buf == NULL ? "(null)" : buf, |
36 | test_cases[i].demangled == NULL ? "(null)" : test_cases[i].demangled); |
37 | ret = TEST_FAIL; |
38 | } |
39 | free(buf); |
40 | } |
41 | |
42 | return ret; |
43 | } |
44 | |
45 | DEFINE_SUITE("Demangle OCaml" , demangle_ocaml); |
46 | |