multiversx_sc_scenario/facade/
scenario_world_runner.rs1use crate::{
2 facade::ScenarioWorld,
3 scenario::{model::*, ScenarioRunner},
4};
5
6use super::scenario_world::Backend;
7
8impl ScenarioWorld {
9 pub fn for_each_runner_mut<F: FnMut(&mut dyn ScenarioRunner)>(&mut self, mut f: F) {
10 match &mut self.backend {
11 Backend::Debugger(cd_debugger) => {
12 f(&mut cd_debugger.vm_runner);
13 if let Some(trace) = &mut cd_debugger.trace {
14 f(trace);
15 }
16 }
17 Backend::VmGoBackend => {
18 panic!("the VM Go backend does not support step-by-step execution")
19 }
20 }
21 }
22}
23
24impl ScenarioRunner for ScenarioWorld {
25 fn run_external_steps(&mut self, step: &ExternalStepsStep) {
26 self.for_each_runner_mut(|runner| runner.run_external_steps(step));
27 }
28
29 fn run_set_state_step(&mut self, step: &SetStateStep) {
30 self.for_each_runner_mut(|runner| runner.run_set_state_step(step));
31 }
32
33 fn run_sc_call_step(&mut self, step: &mut ScCallStep) {
34 self.for_each_runner_mut(|runner| runner.run_sc_call_step(step));
35 }
36
37 fn run_multi_sc_call_step(&mut self, steps: &mut [ScCallStep]) {
38 self.for_each_runner_mut(|runner| runner.run_multi_sc_call_step(steps));
39 }
40
41 fn run_multi_sc_deploy_step(&mut self, steps: &mut [ScDeployStep]) {
42 self.for_each_runner_mut(|runner| runner.run_multi_sc_deploy_step(steps));
43 }
44
45 fn run_sc_query_step(&mut self, step: &mut ScQueryStep) {
46 self.for_each_runner_mut(|runner| runner.run_sc_query_step(step));
47 }
48
49 fn run_sc_deploy_step(&mut self, step: &mut ScDeployStep) {
50 self.for_each_runner_mut(|runner| runner.run_sc_deploy_step(step));
51 }
52
53 fn run_transfer_step(&mut self, step: &TransferStep) {
54 self.for_each_runner_mut(|runner| runner.run_transfer_step(step));
55 }
56
57 fn run_validator_reward_step(&mut self, step: &ValidatorRewardStep) {
58 self.for_each_runner_mut(|runner| runner.run_validator_reward_step(step));
59 }
60
61 fn run_check_state_step(&mut self, step: &CheckStateStep) {
62 self.for_each_runner_mut(|runner| runner.run_check_state_step(step));
63 }
64
65 fn run_dump_state_step(&mut self) {
66 self.for_each_runner_mut(|runner| runner.run_dump_state_step());
67 }
68}