Compare commits

...

5 Commits

Author SHA1 Message Date
Omar Abdulla f543903920 Merge remote-tracking branch 'origin/main' into feature/virtual-repeat 2025-09-22 06:21:05 +03:00
Omar Abdulla f54c543c18 Support virtual repeats 2025-09-21 07:44:01 +03:00
Omar Abdulla 736c50a8f0 Update the JSON schema 2025-09-21 07:39:57 +03:00
Omar Abdulla e2fb7a4322 Add support for account allocations 2025-09-21 07:37:07 +03:00
Omar Abdulla 0edfb3a36e Support repetitions in the tool 2025-09-21 05:55:01 +03:00
+19 -2
View File
@@ -5,7 +5,7 @@ use revive_dt_common::{macros::define_wrapper_type, types::Mode};
use crate::{ use crate::{
mode::ParsedMode, mode::ParsedMode,
steps::{Expected, Step}, steps::{Expected, RepeatStep, Step},
}; };
#[derive(Debug, Default, Serialize, Deserialize, Clone, Eq, PartialEq, JsonSchema)] #[derive(Debug, Default, Serialize, Deserialize, Clone, Eq, PartialEq, JsonSchema)]
@@ -55,7 +55,6 @@ pub struct Case {
} }
impl Case { impl Case {
#[allow(irrefutable_let_patterns)]
pub fn steps_iterator(&self) -> impl Iterator<Item = Step> { pub fn steps_iterator(&self) -> impl Iterator<Item = Step> {
let steps_len = self.steps.len(); let steps_len = self.steps.len();
self.steps self.steps
@@ -84,6 +83,24 @@ impl Case {
}) })
} }
pub fn steps_iterator_for_benchmarks(
&self,
default_repeat_count: usize,
) -> Box<dyn Iterator<Item = Step> + '_> {
let contains_repeat = self
.steps_iterator()
.any(|step| matches!(&step, Step::Repeat(..)));
if contains_repeat {
Box::new(self.steps_iterator()) as Box<_>
} else {
Box::new(std::iter::once(Step::Repeat(Box::new(RepeatStep {
comment: None,
repeat: default_repeat_count,
steps: self.steps_iterator().collect(),
})))) as Box<_>
}
}
pub fn solc_modes(&self) -> Vec<Mode> { pub fn solc_modes(&self) -> Vec<Mode> {
match &self.modes { match &self.modes {
Some(modes) => ParsedMode::many_to_modes(modes.iter()).collect(), Some(modes) => ParsedMode::many_to_modes(modes.iter()).collect(),