multiversx_sc_scenario/scenario/model/
storage_check.rs

1use crate::scenario_format::{
2    interpret_trait::{InterpretableFrom, InterpreterContext, IntoRaw},
3    serde_raw::CheckStorageRaw,
4};
5
6use super::CheckStorageDetails;
7
8#[derive(Debug, Clone, Default)]
9pub enum CheckStorage {
10    #[default]
11    Star,
12    Equal(CheckStorageDetails),
13}
14
15impl CheckStorage {
16    pub fn is_star(&self) -> bool {
17        matches!(self, CheckStorage::Star)
18    }
19}
20
21impl InterpretableFrom<CheckStorageRaw> for CheckStorage {
22    fn interpret_from(from: CheckStorageRaw, context: &InterpreterContext) -> Self {
23        match from {
24            CheckStorageRaw::Star => CheckStorage::Star,
25            CheckStorageRaw::Equal(m) => {
26                CheckStorage::Equal(CheckStorageDetails::interpret_from(m, context))
27            }
28        }
29    }
30}
31
32impl IntoRaw<CheckStorageRaw> for CheckStorage {
33    fn into_raw(self) -> CheckStorageRaw {
34        match self {
35            CheckStorage::Star => CheckStorageRaw::Star,
36            CheckStorage::Equal(details) => CheckStorageRaw::Equal(details.into_raw()),
37        }
38    }
39}