use syn::{parse_quote, Path, Type};
use crate::ext::Mangle;
#[test]
fn mangle_generic_ident_test() {
assert!(Type::mangle_ident_default(&parse_quote!(Vec<u8>)).eq("Vec_u8"));
assert!(Type::mangle_ident_default(&parse_quote!(Vec<u32>)).eq("Vec_u32"));
assert!(Type::mangle_ident_default(&parse_quote!(Vec<bool>)).eq("Vec_bool"));
assert!(Type::mangle_ident_default(&parse_quote!(Vec<module::HashID>)).eq("Vec_module_HashID"));
assert!(Type::mangle_ident_default(&parse_quote!(Vec<Vec<u8>>)).eq("Vec_Vec_u8"));
assert!(Type::mangle_ident_default(&parse_quote!(Vec<Vec<module::HashID>>)).eq("Vec_Vec_module_HashID"));
assert!(Path::mangle_ident_default(&parse_quote!(Vec<Vec<Vec<u8>>>)).eq("Vec_Vec_Vec_u8"));
assert!(Type::mangle_ident_default(&parse_quote!(Vec<Vec<Vec<module::HashID>>>)).eq("Vec_Vec_Vec_module_HashID"));
assert!(Type::mangle_ident_default(&parse_quote!(Vec<BTreeMap<u32, u32>>)).eq("Vec_Map_keys_u32_values_u32"));
assert!(Path::mangle_ident_default(&parse_quote!(Vec<BTreeMap<module::HashID, module::KeyID>>)).eq("Vec_Map_keys_module_HashID_values_module_KeyID"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<u32, u32>)).eq("Map_keys_u32_values_u32"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<u32, module::HashID>)).eq("Map_keys_u32_values_module_HashID"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, u32>)).eq("Map_keys_module_HashID_values_u32"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, module::HashID>)).eq("Map_keys_module_HashID_values_module_HashID"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, Vec<u32>>)).eq("Map_keys_module_HashID_values_Vec_u32"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, Vec<module::KeyID>>)).eq("Map_keys_module_HashID_values_Vec_module_KeyID"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, BTreeMap<module::HashID, module::KeyID>>)).eq("Map_keys_module_HashID_values_Map_keys_module_HashID_values_module_KeyID"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, BTreeMap<module::HashID, Vec<u32>>>)).eq("Map_keys_module_HashID_values_Map_keys_module_HashID_values_Vec_u32"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, BTreeMap<module::HashID, Vec<module::KeyID>>>)).eq("Map_keys_module_HashID_values_Map_keys_module_HashID_values_Vec_module_KeyID"));
assert!(Type::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, BTreeMap<module::HashID, BTreeMap<module::HashID, module::KeyID>>>)).eq("Map_keys_module_HashID_values_Map_keys_module_HashID_values_Map_keys_module_HashID_values_module_KeyID"));
assert!(Path::mangle_ident_default(&parse_quote!(BTreeMap<module::HashID, BTreeMap<module::HashID, BTreeMap<module::HashID, Vec<module::KeyID>>>>)).eq("Map_keys_module_HashID_values_Map_keys_module_HashID_values_Map_keys_module_HashID_values_Vec_module_KeyID"));
}