use crate::{
test_utils::{builder::Contract, ALICE, ALICE_ADDR},
tests::{builder, ExtBuilder, Test},
Code, Config, Pallet,
};
use alloy_core::sol_types::{SolCall, SolInterface};
use frame_support::traits::fungible::Mutate;
use pallet_revive_fixtures::{compile_module_with_type, FixtureType, TransactionInfo};
use pretty_assertions::assert_eq;
use sp_core::H160;
use test_case::test_case;
#[test_case(FixtureType::Solc)]
#[test_case(FixtureType::Resolc)]
fn gasprice_works(fixture_type: FixtureType) {
let (code, _) = compile_module_with_type("TransactionInfo", fixture_type).unwrap();
ExtBuilder::default().build().execute_with(|| {
let _ = <Test as Config>::Currency::set_balance(&ALICE, 100_000_000_000);
let Contract { addr, .. } =
builder::bare_instantiate(Code::Upload(code)).build_and_unwrap_contract();
let result = builder::bare_call(addr)
.data(
TransactionInfo::TransactionInfoCalls::gasprice(TransactionInfo::gaspriceCall {})
.abi_encode(),
)
.build_and_unwrap_result();
let decoded = TransactionInfo::gaspriceCall::abi_decode_returns(&result.data).unwrap();
assert_eq!(<Pallet<Test>>::evm_base_fee().as_u64(), decoded);
});
}
#[test_case(FixtureType::Solc)]
#[test_case(FixtureType::Resolc)]
fn origin_works(fixture_type: FixtureType) {
let (code, _) = compile_module_with_type("TransactionInfo", fixture_type).unwrap();
ExtBuilder::default().build().execute_with(|| {
let _ = <Test as Config>::Currency::set_balance(&ALICE, 100_000_000_000);
let Contract { addr, .. } =
builder::bare_instantiate(Code::Upload(code)).build_and_unwrap_contract();
let result = builder::bare_call(addr)
.data(
TransactionInfo::TransactionInfoCalls::origin(TransactionInfo::originCall {})
.abi_encode(),
)
.build_and_unwrap_result();
let decoded = TransactionInfo::originCall::abi_decode_returns(&result.data).unwrap();
assert_eq!(ALICE_ADDR, H160::from_slice(decoded.as_slice()));
});
}