/** * @file java_test.cpp * * A simple test for java demangling. Run it through: * $ java_test * * @remark Copyright 2007 OProfile authors * @remark Read the file COPYING * * @author Philippe Elie */ #include "demangle_java_symbol.h" #include "op_regex.h" #include <iostream> #include <fstream> #include <cstdlib> using namespace std; namespace { void check_result(string const & input, string const & output, string const & result) { if (result != output) { cerr << "for:\n\"" << input << "\"\n" << "expect:\n\"" << output << "\"\n" << "found:\n\"" << result << "\"\n"; exit(EXIT_FAILURE); } } struct input_output { char const * mangled; char const * expect; }; input_output mangle_tests[] = { { "Ltest$test_1;f2(I)V", "void test$test_1.f2(int)" }, { "Ltest;f4()V", "void test.f4()" }, { "Ltest;f2(II)V", "void test.f2(int, int)" }, { "Ltest$HelloThread;run()V~1", "void test$HelloThread.run()~1" }, { "Lsun/security/provider/SHA;implCompress([BI)V", "void sun.security.provider.SHA.implCompress(byte[], int)" }, { "Ljava/lang/String;equals(Ljava/lang/Object;)Z", "boolean java.lang.String.equals(java.lang.Object)" }, { "Lorg/eclipse/swt/graphics/ImageData;blit(I[BIIIIIIIIIII[BIII[BIIIIIIIIIIZZ)V", "void org.eclipse.swt.graphics.ImageData.blit(int, byte[], int, int, int, int, int, int, int, int, int, int, int, byte[], int, int, int, byte[], int, int, int, int, int, int, int, int, int, int, boolean, boolean)" }, { 0, 0 } }; } // anonymous namespace int main(void) { input_output const * cur; for (cur = mangle_tests; cur->mangled; ++cur) { string result = demangle_java_symbol(cur->mangled); check_result(cur->mangled, cur->expect, result); } return 0; }