Skip to content

Commit

Permalink
++
Browse files Browse the repository at this point in the history
  • Loading branch information
qalisander committed Sep 20, 2024
1 parent e385668 commit 4b6eea2
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 5 deletions.
11 changes: 6 additions & 5 deletions contracts-proc/src/interface_id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,13 @@ pub(crate) fn interface_id(
func.attrs.push(attr);
}

let sol_name = override_name.unwrap_or_else(|| {
func.sig.ident.clone().to_string().to_case(Case::Camel)
});
let sol_name = override_name
.unwrap_or_else(|| func.sig.ident.to_string().to_case(Case::Camel));

let args = func.sig.inputs.iter();
let arg_types: Vec<_> = args
let arg_types: Vec<_> = func
.sig
.inputs
.iter()
.filter_map(|arg| match arg {
FnArg::Typed(t) => Some(t.ty.clone()),
FnArg::Receiver(_) => None,
Expand Down
12 changes: 12 additions & 0 deletions contracts/src/token/erc20/extensions/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,15 @@ impl IErc165 for Erc20Metadata {
== u32::from_be_bytes(*interface_id)
}
}

#[cfg(all(test, feature = "std"))]
mod tests {
use crate::token::erc20::extensions::{Erc20Metadata, IErc20Metadata};

#[motsu::test]
fn interface_id() {
let actual = <Erc20Metadata as IErc20Metadata>::INTERFACE_ID;
let expected = 0xa219a025;
assert_eq!(actual, expected);
}
}
7 changes: 7 additions & 0 deletions contracts/src/token/erc721/extensions/enumerable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -559,4 +559,11 @@ mod tests {
contract.token_of_owner_by_index(alice, U256::ZERO).unwrap_err();
assert!(matches!(err, Error::OutOfBoundsIndex(_)));
}

#[motsu::test]
fn interface_id() {
let actual = <Erc721Enumerable as IErc721Enumerable>::INTERFACE_ID;
let expected = 0x780e9d63;
assert_eq!(actual, expected);
}
}
12 changes: 12 additions & 0 deletions contracts/src/token/erc721/extensions/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,15 @@ impl IErc165 for Erc721Metadata {
== u32::from_be_bytes(*interface_id)
}
}

#[cfg(all(test, feature = "std"))]
mod tests {
use crate::token::erc721::extensions::{Erc721Metadata, IErc721Metadata};

#[motsu::test]
fn interface_id() {
let actual = <Erc721Metadata as IErc721Metadata>::INTERFACE_ID;
let expected = 0x5b5e139f;
assert_eq!(actual, expected);
}
}
10 changes: 10 additions & 0 deletions examples/erc20/tests/erc20.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1371,5 +1371,15 @@ async fn support_interface(alice: Account) -> Result<()> {

assert_eq!(supports_interface, true);

let erc20_metadata_interface_id: u32 = 0xa219a025;
let Erc20::supportsInterfaceReturn {
supportsInterface: supports_interface,
} = contract
.supportsInterface(erc20_metadata_interface_id.into())
.call()
.await?;

assert_eq!(supports_interface, true);

Ok(())
}
10 changes: 10 additions & 0 deletions examples/erc721/tests/erc721.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2123,5 +2123,15 @@ async fn support_interface(alice: Account) -> eyre::Result<()> {

assert_eq!(supports_interface, true);

let erc721_enumerable_interface_id: u32 = 0x780e9d63;
let Erc721::supportsInterfaceReturn {
supportsInterface: supports_interface,
} = contract
.supportsInterface(erc721_enumerable_interface_id.into())
.call()
.await?;

assert_eq!(supports_interface, true);

Ok(())
}

0 comments on commit 4b6eea2

Please sign in to comment.