use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum OnViolation {
Warn,
Drop,
Fail,
}
impl Default for OnViolation {
fn default() -> Self {
OnViolation::Warn
}
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Expectation {
pub name: String,
pub constraint: String,
#[serde(default)]
pub on_violation: OnViolation,
}
impl Expectation {
pub fn new(name: impl Into<String>, constraint: impl Into<String>) -> Self {
Expectation {
name: name.into(),
constraint: constraint.into(),
on_violation: OnViolation::Warn,
}
}
pub fn on(mut self, policy: OnViolation) -> Self {
self.on_violation = policy;
self
}
}