git.delta.rocks / unique-network / refs/commits / e5f3450abd04

difftreelog

source

crates/evm-coder/tests/conditional_is.rs761 Bsourcehistory
1use evm_coder::{types::*, solidity_interface, execution::Result};23pub struct Contract(bool);45#[solidity_interface(name = A)]6impl Contract {7	fn method_a() -> Result<()> {8		Ok(())9	}10}1112#[solidity_interface(name = B)]13impl Contract {14	fn method_b() -> Result<()> {15		Ok(())16	}17}1819#[solidity_interface(name = Contract, is(20	A(if(this.0)),21	B(if(!this.0)),22))]23impl Contract {}2425#[test]26fn conditional_erc165() {27	assert!(ContractCall::supports_interface(28		&Contract(true),29		ACall::METHOD_A30	));31	assert!(!ContractCall::supports_interface(32		&Contract(false),33		ACall::METHOD_A34	));3536	assert!(ContractCall::supports_interface(37		&Contract(false),38		BCall::METHOD_B39	));40	assert!(!ContractCall::supports_interface(41		&Contract(true),42		BCall::METHOD_B43	));44}