use crate::contract_macro_arc56::mock_params;
use algonaut::contract;
use algonaut_core::AppId;
use algonaut_transaction::account::Account;
use std::sync::Arc;
contract!("tests/fixtures/arc56_test.arc56.json");
#[test]
fn inline_nested_struct_argument_builds_a_call() {
let alice = Account::generate();
let address = alice.address();
let client = ARC56Test::new(AppId(123), address, Arc::new(alice));
let _call = client
.foo(Inputs {
add: InputsAdd { a: 1, b: 2 },
subtract: InputsSubtract { a: 10, b: 5 },
})
.build(&mock_params());
let _opt_in = client.opt_in_to_application();
}
#[test]
fn state_accessors_are_generated_with_expected_signatures() {
use algonaut::Algod;
use algonaut::abi::abi_type::AbiValue;
use algonaut_core::Address;
use std::future::Future;
type Fetch<'a> =
std::pin::Pin<Box<dyn Future<Output = Result<Option<AbiValue>, algonaut::Error>> + 'a>>;
fn assert_global<'a>(c: &'a ARC56Test, a: &'a Algod) -> Fetch<'a> {
Box::pin(c.global_global_key(a))
}
fn assert_local<'a>(c: &'a ARC56Test, a: &'a Algod, acct: &'a Address) -> Fetch<'a> {
Box::pin(c.local_local_key(a, acct))
}
fn assert_box<'a>(c: &'a ARC56Test, a: &'a Algod) -> Fetch<'a> {
Box::pin(c.box_box_key(a))
}
fn assert_local_map<'a>(c: &'a ARC56Test, a: &'a Algod, acct: &'a Address) -> Fetch<'a> {
Box::pin(c.local_local_map(a, acct, b"k".as_slice()))
}
let _ = (
assert_global as fn(_, _) -> _,
assert_local as fn(_, _, _) -> _,
assert_box as fn(_, _) -> _,
assert_local_map as fn(_, _, _) -> _,
);
}