use proptest::test_runner::{Config, TestCaseError, TestRunner};
use mctrust::*;
#[test]
fn outcome_terminal_implies_reward_exists() {
let mut runner = TestRunner::new(Config::with_cases(128));
runner
.run(&(-1_000_000i32..=1_000_000), |scaled| {
let reward = f64::from(scaled) / 1_000_000.0;
let o = Outcome::Terminal(Reward::new(reward));
if !o.is_terminal() || o.reward().is_none() {
return Err(TestCaseError::fail("terminal outcome must carry reward"));
}
Ok(())
})
.unwrap();
}
#[test]
fn outcome_ongoing_implies_no_reward() {
let o = Outcome::Ongoing;
assert!(!o.is_terminal() && o.reward().is_none());
}
#[test]
fn outcome_failure_is_terminal_with_loss() {
assert!(Outcome::Failure.is_terminal());
assert_eq!(Outcome::Failure.reward(), Some(Reward::LOSS));
}
#[test]
fn outcome_neutral_is_terminal_with_draw() {
assert!(Outcome::Neutral.is_terminal());
assert_eq!(Outcome::Neutral.reward(), Some(Reward::DRAW));
}