difftreelog
misk: add tests
in: master
2 files changed
crates/evm-coder/procedural/src/abi_derive.rsdiffbeforeafterboth--- a/crates/evm-coder/procedural/src/abi_derive.rs
+++ b/crates/evm-coder/procedural/src/abi_derive.rs
@@ -79,7 +79,7 @@
let abi_type = impl_enum_abi_type(name);
let abi_read = impl_enum_abi_read(name);
let abi_write = impl_enum_abi_write(name);
- let solidity_type_name = impl_enum_solidity_type_name(name, enum_options.clone());
+ let solidity_type_name = impl_enum_solidity_type_name(name);
let solidity_struct_collect =
impl_enum_solidity_struct_collect(name, enum_options, option_count);
@@ -105,6 +105,7 @@
quote!(#name::#opt => #as_string,)
});
quote!(
+ #[cfg(feature = "stubgen")]
impl ::evm_coder::solidity::SolidityEnum for #name {
fn solidity_option(&self) -> &str {
match <#name>::default() {
@@ -176,11 +177,7 @@
)
}
-fn impl_enum_solidity_type_name<'a>(
- name: &syn::Ident,
- enum_options: impl Iterator<Item = &'a syn::Ident>,
-) -> proc_macro2::TokenStream {
- let enum_options = enum_options.map(|opt| quote!(,));
+fn impl_enum_solidity_type_name<'a>(name: &syn::Ident) -> proc_macro2::TokenStream {
quote!(
#[cfg(feature = "stubgen")]
impl ::evm_coder::solidity::SolidityTypeName for #name {
crates/evm-coder/tests/abi_derive_generation.rsdiffbeforeafterboth739mod test_enum {739mod test_enum {740 use evm_coder::AbiCoder;740 use evm_coder::AbiCoder;741741742 /// Some docs743 /// At multi744 /// line742 #[derive(AbiCoder, Default)]745 #[derive(AbiCoder, Debug, PartialEq, Default)]743 #[repr(u8)]746 #[repr(u8)]744 enum Color {747 enum Color {748 /// Docs for Red749 /// multi750 /// line745 Red,751 Red,752 /// Docs for Green746 Green,753 Green,754 /// Docs for Blue747 #[default]755 #[default]748 Blue,756 Blue,749 }757 }757 t.compile_fail("tests/build_failed/abi_derive_enum_generation.rs");765 t.compile_fail("tests/build_failed/abi_derive_enum_generation.rs");758 }766 }767768 #[test]769 fn impl_abi_type_signature_same_for_structs() {770 assert_eq!(771 <Color as evm_coder::abi::AbiType>::SIGNATURE772 .as_str()773 .unwrap(),774 <u8 as evm_coder::abi::AbiType>::SIGNATURE.as_str().unwrap()775 );776 }777778 #[test]779 fn impl_abi_type_is_dynamic_same_for_structs() {780 assert_eq!(781 <Color as evm_coder::abi::AbiType>::is_dynamic(),782 <u8 as evm_coder::abi::AbiType>::is_dynamic()783 );784 }785786 #[test]787 fn impl_abi_type_size_same_for_structs() {788 assert_eq!(789 <Color as evm_coder::abi::AbiType>::size(),790 <u8 as evm_coder::abi::AbiType>::size()791 );792 }793794 #[test]795 fn test_coder() {796 const FUNCTION_IDENTIFIER: u32 = 0xdeadbeef;797798 let encoded_enum = {799 let mut writer = evm_coder::abi::AbiWriter::new_call(FUNCTION_IDENTIFIER);800 <Color as evm_coder::abi::AbiWrite>::abi_write(&Color::Green, &mut writer);801 writer.finish()802 };803804 let encoded_u8 = {805 let mut writer = evm_coder::abi::AbiWriter::new_call(FUNCTION_IDENTIFIER);806 <u8 as evm_coder::abi::AbiWrite>::abi_write(&(Color::Green as u8), &mut writer);807 writer.finish()808 };809810 similar_asserts::assert_eq!(encoded_enum, encoded_u8);811812 {813 let (_, mut decoder) = evm_coder::abi::AbiReader::new_call(&encoded_enum).unwrap();814 let restored_enum_data =815 <Color as evm_coder::abi::AbiRead>::abi_read(&mut decoder).unwrap();816 assert_eq!(restored_enum_data, Color::Green);817 }818 }819820 #[test]821 #[cfg(feature = "stubgen")]822 fn struct_collect_enum() {823 assert_eq!(824 <Color as ::evm_coder::solidity::StructCollect>::name(),825 "Color"826 );827 assert_eq!(828 <Color as ::evm_coder::solidity::StructCollect>::declaration(),829 r#"/// @dev Some docs830/// At multi831/// line832enum Color {833 /// @dev Docs for A834 /// multi835 /// line836 Red,837 /// @dev Docs for B838 Green,839 /// @dev Docs for C840 Blue841}842"#843 );844 }759}845}760846