mirror of
https://github.com/pezkuwichain/revive-differential-tests.git
synced 2026-04-22 12:38:04 +00:00
90fb89adc0
* Add a barebones common crate * Refactor some code into the common crate * Add a `ResolverApi` interface. This commit adds a `ResolverApi` trait to the `format` crate that can be implemented by any type that can act as a resolver. A resolver is able to provide information on the chain state. This chain state could be fresh or it could be cached (which is something that we will do in a future PR). This cleans up our crate graph so that `format` is not depending on the node interactions crate for the `EthereumNode` trait. * Cleanup the blocking executor
51 lines
1.5 KiB
Rust
51 lines
1.5 KiB
Rust
use serde::Deserialize;
|
|
|
|
use revive_dt_common::macros::define_wrapper_type;
|
|
|
|
use crate::{
|
|
input::{Expected, Input},
|
|
mode::Mode,
|
|
};
|
|
|
|
#[derive(Debug, Default, Deserialize, Clone, Eq, PartialEq)]
|
|
pub struct Case {
|
|
pub name: Option<String>,
|
|
pub comment: Option<String>,
|
|
pub modes: Option<Vec<Mode>>,
|
|
pub inputs: Vec<Input>,
|
|
pub group: Option<String>,
|
|
pub expected: Option<Expected>,
|
|
}
|
|
|
|
impl Case {
|
|
pub fn inputs_iterator(&self) -> impl Iterator<Item = Input> {
|
|
let inputs_len = self.inputs.len();
|
|
self.inputs
|
|
.clone()
|
|
.into_iter()
|
|
.enumerate()
|
|
.map(move |(idx, mut input)| {
|
|
if idx + 1 == inputs_len {
|
|
if input.expected.is_none() {
|
|
input.expected = self.expected.clone();
|
|
}
|
|
|
|
// TODO: What does it mean for us to have an `expected` field on the case itself
|
|
// but the final input also has an expected field that doesn't match the one on
|
|
// the case? What are we supposed to do with that final expected field on the
|
|
// case?
|
|
|
|
input
|
|
} else {
|
|
input
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
define_wrapper_type!(
|
|
/// A wrapper type for the index of test cases found in metadata file.
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
|
|
pub struct CaseIdx(usize);
|
|
);
|