use serde::Deserialize;
use super::TestEvent;
/// Expected outcome of a validation test case.
#[derive(Clone, Copy, Deserialize)]
pub enum TestCaseExpectation {
/// All events were processed successfully.
#[serde(rename = "success")]
Success,
/// All events failed to be processed successfully.
#[serde(rename = "failure")]
Failure,
/// Some events, but not all, were processed successfully.
#[serde(rename = "partial_success")]
PartialSuccess,
}
/// A validation test case.
///
/// Test cases define both the events that should be given as input to the component being
/// validated, as well as the "expectation" for the test case, in terms of if all the events should
/// be processed successfully, or fail to be processed, and so on.
#[derive(Deserialize)]
pub struct TestCase {
pub name: String,
pub config_name: Option<String>,
pub expectation: TestCaseExpectation,
pub events: Vec<TestEvent>,
}