1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use std::rc::Rc;
use elrond_wasm::types::Address;
use mandos::model::{TxDeploy, TxExpect};
use crate::{
tx_execution::sc_create,
tx_mock::{generate_tx_hash_dummy, TxInput},
world_mock::BlockchainMock,
};
use super::check_tx_output;
pub fn execute(
state: &mut Rc<BlockchainMock>,
tx_id: &str,
tx: &TxDeploy,
expect: &Option<TxExpect>,
) {
let tx_input = TxInput {
from: tx.from.value.into(),
to: Address::zero(),
egld_value: tx.egld_value.value.clone(),
esdt_values: Vec::new(),
func_name: b"init".to_vec(),
args: tx
.arguments
.iter()
.map(|scen_arg| scen_arg.value.clone())
.collect(),
gas_limit: tx.gas_limit.value,
gas_price: tx.gas_price.value,
tx_hash: generate_tx_hash_dummy(tx_id),
};
let tx_result = sc_create(tx_input, &tx.contract_code.value, state);
if let Some(tx_expect) = expect {
check_tx_output(tx_id, tx_expect, &tx_result);
}
}