use eip712::abi::{self, Kind, StateMutability};
#[cfg(target_arch = "wasm32")]
use wasm_bindgen_test::wasm_bindgen_test as test;
#[test]
fn ownable() {
let ownable = abi::from_slice(include_bytes!("abi/ownable.json")).unwrap();
assert_eq!(4, ownable.len());
let event = ownable[0].as_event().unwrap();
assert_eq!(false, event.anonymous());
assert_eq!("OwnershipTransferred", event.name());
let inputs = event.inputs();
assert_eq!(2, inputs.len());
assert_eq!(true, inputs[0].indexed());
assert_eq!(
Kind::address(),
inputs[0].internal_kind().clone().try_into().unwrap()
);
assert_eq!("previousOwner", inputs[0].name());
assert_eq!(&Kind::address(), inputs[0].kind());
assert_eq!(true, inputs[1].indexed());
assert_eq!(
Kind::address(),
inputs[1].internal_kind().clone().try_into().unwrap()
);
assert_eq!("newOwner", inputs[1].name());
assert_eq!(&Kind::address(), inputs[1].kind());
let func = ownable[1].as_function().unwrap();
assert_eq!("owner", func.name());
assert_eq!(StateMutability::View, func.state_mutability());
assert!(func.inputs().is_empty());
let outputs = func.outputs();
assert_eq!(1, outputs.len());
assert_eq!(
Kind::address(),
outputs[0].internal_kind().clone().try_into().unwrap()
);
assert_eq!("", outputs[0].name());
assert_eq!(&Kind::address(), outputs[0].kind());
let func = ownable[2].as_function().unwrap();
assert_eq!("renounceOwnership", func.name());
assert_eq!(StateMutability::Nonpayable, func.state_mutability());
assert!(func.inputs().is_empty());
assert!(func.outputs().is_empty());
let func = ownable[3].as_function().unwrap();
assert_eq!("transferOwnership", func.name());
assert_eq!(StateMutability::Nonpayable, func.state_mutability());
assert!(func.outputs().is_empty());
let inputs = func.inputs();
assert_eq!(1, inputs.len());
assert_eq!(
Kind::address(),
inputs[0].internal_kind().clone().try_into().unwrap()
);
assert_eq!("newOwner", inputs[0].name());
assert_eq!(&Kind::address(), inputs[0].kind());
}
const FOO: &[u8] = include_bytes!("abi/foo.json");
#[test]
fn foo() {
let foo = abi::from_slice(FOO).unwrap();
assert_eq!(3, foo.len());
}
#[test]
fn foo_to_foo() {
let expected: serde_json::Value = serde_json::from_slice(FOO).unwrap();
let foo = abi::from_slice(FOO).unwrap();
let actual = serde_json::to_value(foo).unwrap();
if expected != actual {
println!("Expected:");
println!("{:#}", expected);
println!();
println!("Actual:");
println!("{:#}", actual);
}
assert_eq!(expected, actual);
}