1525c821dSNick Gasson // SPDX-License-Identifier: GPL-2.0
2525c821dSNick Gasson #include <string.h>
3525c821dSNick Gasson #include <stdlib.h>
4525c821dSNick Gasson #include <stdio.h>
5*9865f0a2SJiapeng Chong #include <linux/kernel.h>
6525c821dSNick Gasson #include "tests.h"
7525c821dSNick Gasson #include "session.h"
8525c821dSNick Gasson #include "debug.h"
9525c821dSNick Gasson #include "demangle-java.h"
10525c821dSNick Gasson
test__demangle_java(struct test_suite * test __maybe_unused,int subtest __maybe_unused)1133f44bfdSIan Rogers static int test__demangle_java(struct test_suite *test __maybe_unused, int subtest __maybe_unused)
12525c821dSNick Gasson {
13525c821dSNick Gasson int ret = TEST_OK;
14525c821dSNick Gasson char *buf = NULL;
15525c821dSNick Gasson size_t i;
16525c821dSNick Gasson
17525c821dSNick Gasson struct {
18525c821dSNick Gasson const char *mangled, *demangled;
19525c821dSNick Gasson } test_cases[] = {
20525c821dSNick Gasson { "Ljava/lang/StringLatin1;equals([B[B)Z",
21525c821dSNick Gasson "boolean java.lang.StringLatin1.equals(byte[], byte[])" },
22525c821dSNick Gasson { "Ljava/util/zip/ZipUtils;CENSIZ([BI)J",
23525c821dSNick Gasson "long java.util.zip.ZipUtils.CENSIZ(byte[], int)" },
24525c821dSNick Gasson { "Ljava/util/regex/Pattern$BmpCharProperty;match(Ljava/util/regex/Matcher;ILjava/lang/CharSequence;)Z",
25525c821dSNick Gasson "boolean java.util.regex.Pattern$BmpCharProperty.match(java.util.regex.Matcher, int, java.lang.CharSequence)" },
26525c821dSNick Gasson { "Ljava/lang/AbstractStringBuilder;appendChars(Ljava/lang/String;II)V",
27525c821dSNick Gasson "void java.lang.AbstractStringBuilder.appendChars(java.lang.String, int, int)" },
28525c821dSNick Gasson { "Ljava/lang/Object;<init>()V",
29525c821dSNick Gasson "void java.lang.Object<init>()" },
30525c821dSNick Gasson };
31525c821dSNick Gasson
32*9865f0a2SJiapeng Chong for (i = 0; i < ARRAY_SIZE(test_cases); i++) {
33525c821dSNick Gasson buf = java_demangle_sym(test_cases[i].mangled, 0);
34525c821dSNick Gasson if (strcmp(buf, test_cases[i].demangled)) {
35525c821dSNick Gasson pr_debug("FAILED: %s: %s != %s\n", test_cases[i].mangled,
36525c821dSNick Gasson buf, test_cases[i].demangled);
37525c821dSNick Gasson ret = TEST_FAIL;
38525c821dSNick Gasson }
39525c821dSNick Gasson free(buf);
40525c821dSNick Gasson }
41525c821dSNick Gasson
42525c821dSNick Gasson return ret;
43525c821dSNick Gasson }
44d68f0365SIan Rogers
45d68f0365SIan Rogers DEFINE_SUITE("Demangle Java", demangle_java);
46