use fugue::*;
const EXPORTED_DISTRIBUTION_COUNT: usize = 17;
#[test]
fn validate_all_exported_distributions() {
let results: Vec<bool> = vec![
Normal::new(0.0, 1.0).unwrap().validate().is_ok(),
Exponential::new(1.0).unwrap().validate().is_ok(),
Beta::new(2.0, 3.0).unwrap().validate().is_ok(),
Gamma::new(2.0, 1.0).unwrap().validate().is_ok(),
Uniform::new(0.0, 1.0).unwrap().validate().is_ok(),
Bernoulli::new(0.5).unwrap().validate().is_ok(),
Categorical::new(vec![0.2, 0.8]).unwrap().validate().is_ok(),
LogNormal::new(0.0, 1.0).unwrap().validate().is_ok(),
Binomial::new(10, 0.5).unwrap().validate().is_ok(),
Poisson::new(3.0).unwrap().validate().is_ok(),
StudentT::new(5.0, 0.0, 1.0).unwrap().validate().is_ok(),
Cauchy::new(0.0, 1.0).unwrap().validate().is_ok(),
Laplace::new(0.0, 1.0).unwrap().validate().is_ok(),
Weibull::new(2.0, 1.5).unwrap().validate().is_ok(),
ChiSquared::new(4.0).unwrap().validate().is_ok(),
InverseGamma::new(3.0, 2.0).unwrap().validate().is_ok(),
DiscreteUniform::new(1, 6).unwrap().validate().is_ok(),
];
assert_eq!(
results.len(),
EXPORTED_DISTRIBUTION_COUNT,
"FG-55: every exported distribution must be enumerated here; if you added \
a distribution, add it above (with a `Validate` impl in src/error.rs) and \
bump EXPORTED_DISTRIBUTION_COUNT"
);
assert!(
results.iter().all(|&ok| ok),
"FG-55: `validate()` must return Ok for every valid instance"
);
}