feat(weapon.rs): add unit tests

This commit is contained in:
2026-01-13 14:48:34 +01:00
parent 1120aa04b8
commit 9d29d63efe

View File

@@ -22,7 +22,10 @@ impl Weapon {
self.durability <= 0 self.durability <= 0
} }
pub fn if_not_broken<T>(&mut self, fun: impl FnOnce(u8) -> T) -> Option<T> { pub fn if_not_broken<F, T>(&mut self, fun: F) -> Option<T>
where
F: FnOnce(u8) -> T,
{
if !self.is_broken() { if !self.is_broken() {
Some(fun(self.damage)) Some(fun(self.damage))
} else { } else {
@@ -34,3 +37,30 @@ impl Weapon {
self.name self.name
} }
} }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn weapon_build() {
let w = Weapon::new("test", 10, 100);
assert_eq!(w.damage, 10);
assert_eq!(w.durability, 100);
assert_eq!(w.get_name(), w.name);
}
#[test]
fn weapon_consumption() {
let mut w = Weapon::new("test", 10, 100);
w.consume();
assert_eq!(w.durability, 95);
}
#[test]
fn weapon_if_not_broken() {
let mut w = Weapon::new("test", 10, 100);
let val: u8 = 50;
assert_eq!(w.if_not_broken(|d: u8| { val - d }).unwrap(), 40);
}
}