const DEFAULT_RATE: f64 = 0.0;
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(any(feature = "serde", test), derive(serde::Serialize, serde::Deserialize))]
#[non_exhaustive]
pub struct InjectionConfig {
pub enabled: bool,
pub rate: f64,
}
impl Default for InjectionConfig {
fn default() -> Self {
Self {
enabled: true,
rate: DEFAULT_RATE,
}
}
}
#[cfg_attr(coverage_nightly, coverage(off))]
#[cfg(test)]
mod tests {
use super::*;
#[test]
#[cfg_attr(miri, ignore)]
fn default_snapshot() {
let config = InjectionConfig::default();
insta::assert_json_snapshot!(config);
}
#[test]
fn serde_roundtrip() {
let config = InjectionConfig {
enabled: false,
rate: 0.42,
};
let json = serde_json::to_string(&config).unwrap();
let deserialized: InjectionConfig = serde_json::from_str(&json).unwrap();
assert_eq!(config, deserialized);
}
}