diff options
-rw-r--r-- | src/hitbox.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/hitbox.rs b/src/hitbox.rs index 75cc89b..191e1a1 100644 --- a/src/hitbox.rs +++ b/src/hitbox.rs @@ -61,3 +61,50 @@ fn capsule_circle_intersect(x: &CapsuleHitbox, y: &CircleHitbox) -> bool { fn capsule_point_intersect(x: &CapsuleHitbox, y: &PointHitbox) -> bool { x.line.distance(y.pos) <= x.radius } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn circle_intersecting_circle_origin_example() { + assert_eq!(Hitbox::intersect( + &Hitbox::Circle(CircleHitbox { + pos: Vec2d::new(0.,0.), + radius: 0. + }), + &Hitbox::Circle(CircleHitbox { + pos: Vec2d::new(0.,0.), + radius: 0. + }) + ), true); + } + + #[test] + fn circle_intersecting_circle_origin_elsewhere() { + assert_eq!(Hitbox::intersect( + &Hitbox::Circle(CircleHitbox { + pos: Vec2d::new(0.,0.), + radius: 0.5 + }), + &Hitbox::Circle(CircleHitbox { + pos: Vec2d::new(1.,0.), + radius: 0.5 + }) + ), true); + } + + #[test] + fn circle_intersecting_circle_origin_outside() { + assert_eq!(Hitbox::intersect( + &Hitbox::Circle(CircleHitbox { + pos: Vec2d::new(0.,0.), + radius: 0.5 + }), + &Hitbox::Circle(CircleHitbox { + pos: Vec2d::new(1.,0.), + radius: 0.4 + }) + ), false); + } +} |