mirror of
https://github.com/guezoloic/BakersAdventure.git
synced 2026-01-25 01:34:06 +00:00
feat(weapon.rs): add unit tests
This commit is contained in:
@@ -22,7 +22,10 @@ impl Weapon {
|
||||
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() {
|
||||
Some(fun(self.damage))
|
||||
} else {
|
||||
@@ -34,3 +37,30 @@ impl Weapon {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user