46 lines · c
1// SPDX-License-Identifier: GPL-2.02#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 10static 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 45DEFINE_SUITE("Demangle OCaml", demangle_ocaml);46