summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Gay <eapoems@riseup.net>2023-10-14 20:15:49 -0400
committerDavid Gay <eapoems@riseup.net>2023-10-14 20:28:03 -0400
commitd3997133f809c2e624f2d2d0cbb301d55df5f6cf (patch)
tree3d0e51af4e6b5301910c9d52795b7d7aa3a900e8
parentb71ea4d941805a4d5a7cbefa4a97b67c044a4eea (diff)
Tests and TODOs
-rw-r--r--src/dice.rs33
-rw-r--r--src/rules/npcs.rs4
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.
}
}