use super::*;
use crate::Authorized;
pub(crate) fn sample_all_authorizations(rng: &mut TestRng) -> Vec<Authorized<CurrentNetwork>> {
vec![
sample_bond_public(rng),
sample_claim_unbond_public(rng),
sample_set_validator_state(rng),
sample_transfer_public(rng),
sample_transfer_public_to_private(rng),
sample_unbond_delegator_as_validator(rng),
sample_unbond_public(rng),
]
}
#[test]
fn test_cost() {
use snarkvm::{
ledger::store::{helpers::memory::ConsensusMemory, ConsensusStore},
synthesizer::VM,
};
let rng = &mut TestRng::default();
let vm = VM::from(ConsensusStore::<_, ConsensusMemory<_>>::open(None).unwrap()).unwrap();
let mut string = String::new();
for authorization in sample_all_authorizations(rng) {
let transaction = authorization.execute_local::<CurrentAleo, _>(rng).unwrap();
assert!(transaction.execution().is_some());
assert_eq!(transaction.execution().unwrap().transitions().len(), 1);
let execution = transaction.execution().unwrap();
let transition = execution.transitions().next().unwrap().clone();
let program_id = transition.program_id().to_string();
let function_name = transition.function_name().to_string();
let (cost, _) = snarkvm::synthesizer::execution_cost(&vm, execution).unwrap();
string += &format!("\t(\"{program_id}\", \"{function_name}\") => Ok({cost}),\n");
let found = crate::config::get_base_fee_in_microcredits(&program_id, &function_name).unwrap();
assert_eq!(cost, found);
}
println!("\n{string}");
}