extern crate symbolic_common;
extern crate symbolic_demangle;
use symbolic_common::{Language, Name};
use symbolic_demangle::Demangle;
fn assert_language(input: &str, lang: Language) {
let name = Name::new(input);
assert_eq!(name.detect_language(), Some(lang));
}
fn assert_none(input: &str) {
let name = Name::new(input);
assert_eq!(name.detect_language(), None);
}
#[test]
fn unknown() {
assert_none("xxxxxxxxxxx");
}
#[test]
fn basic_cpp() {
assert_language("_Z1hic", Language::Cpp);
}
#[test]
fn basic_rust() {
assert_language(
"__ZN3std2io4Read11read_to_end17hb85a0f6802e14499E",
Language::Rust,
);
}
#[test]
fn basic_objc_static() {
assert_language("+[Foo bar:blub:]", Language::ObjC);
}
#[test]
fn basic_objc_member() {
assert_language("-[Foo bar:blub:]", Language::ObjC);
}
#[test]
fn basic_swift() {
assert_language("_T08mangling3barSiyKF", Language::Swift);
}
#[test]
fn ambiguous_cpp_rust() {
assert_language(
"_ZN7content11ContentMainERKNS_17ContentMainParamsE",
Language::Cpp,
);
}