mirror of
https://github.com/guezoloic/BakersAdventure.git
synced 2026-01-25 04:34:07 +00:00
feat(weapon.rs): add unit tests
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user