diff options
author | David Gay <eapoems@riseup.net> | 2023-10-14 20:15:49 -0400 |
---|---|---|
committer | David Gay <eapoems@riseup.net> | 2023-10-14 20:28:03 -0400 |
commit | d3997133f809c2e624f2d2d0cbb301d55df5f6cf (patch) | |
tree | 3d0e51af4e6b5301910c9d52795b7d7aa3a900e8 | |
parent | b71ea4d941805a4d5a7cbefa4a97b67c044a4eea (diff) |
Tests and TODOs
-rw-r--r-- | src/dice.rs | 33 | ||||
-rw-r--r-- | src/rules/npcs.rs | 4 |
2 files changed, 37 insertions, 0 deletions
diff --git a/src/dice.rs b/src/dice.rs index cd6cf29..a2a3529 100644 --- a/src/dice.rs +++ b/src/dice.rs @@ -2,6 +2,7 @@ use rand::Rng; use std::fmt; use std::fmt::Formatter; +#[derive(PartialEq, Debug)] pub struct DieRoll { sides: u32, face: u32, @@ -92,3 +93,35 @@ pub fn roll_formula(formula: &str) -> Option<RollResult> { Some(roll_result) } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_roll_result_total() { + let mut roll_result = RollResult::new(); + roll_result.add_roll(DieRoll::new(6, 4)); + roll_result.add_roll(DieRoll::new(6, 2)); + roll_result.add_roll(DieRoll::new(6, 6)); + assert_eq!(roll_result.total(), 12); + } + + #[test] + fn test_increase_sides_below_max() { + let mut roll_result = RollResult::new(); + roll_result.add_roll(DieRoll::new(6, 4)); + roll_result.add_roll(DieRoll::new(6, 2)); + roll_result.add_roll(DieRoll::new(6, 6)); + + roll_result.increase_sides_below_max(6, 1); + + let expected_rolls = vec![ + DieRoll::new(6, 5), // Increased from 4. + DieRoll::new(6, 3), // Increased from 2. + DieRoll::new(6, 6), // Remains the same, as it's 6. + ]; + + assert_eq!(roll_result.rolls, expected_rolls); + } +} diff --git a/src/rules/npcs.rs b/src/rules/npcs.rs index 9cc1650..e190952 100644 --- a/src/rules/npcs.rs +++ b/src/rules/npcs.rs @@ -62,6 +62,10 @@ impl Npc { // TODO: Modify results for race. // TODO: Modify results for henchmen-specific class bonuses. + // TODO: Apply racial minimums and maximums. + // TODO: Verify legality of class based on alignment. + // TODO: Verify legality of class based on race. + // TODO: Verify legality of class based on ability scores. } } |