From fe1c30d52f643843004230f804cfd55f356d0d6d Mon Sep 17 00:00:00 2001 From: Justin Worthe Date: Sat, 27 May 2017 18:59:36 +0200 Subject: Added some tests for math --- src/math.rs | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 90 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/math.rs b/src/math.rs index da06622..f0e323c 100644 --- a/src/math.rs +++ b/src/math.rs @@ -141,14 +141,102 @@ impl Point { #[cfg(test)] mod tests { use super::*; + + #[test] + fn ship_collision_check_works_west() { + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,5), West, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(6,5), West, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(7,5), West, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(8,5), West, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(9,5), West, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(10,5), West, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(4,5), West, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(6,4), West, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(6,6), West, 5)); + } #[test] - fn point_on_lattice_works() { + fn ship_collision_check_works_east() { + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,5), East, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(4,5), East, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(3,5), East, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(2,5), East, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(1,5), East, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(0,5), East, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(6,5), East, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(4,4), East, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(4,6), East, 5)); + } + + #[test] + fn ship_collision_check_works_north() { + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,5), North, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,4), North, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,3), North, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,2), North, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,1), North, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(5,0), North, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(5,6), North, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(4,4), North, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(6,4), North, 5)); + } + + #[test] + fn ship_collision_check_works_south() { + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,5), South, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,6), South, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,7), South, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,8), South, 5)); + assert_eq!(true, Point::new(5,5).check_for_ship_collision(Point::new(5,9), South, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(5,10), South, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(5,4), South, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(4,6), South, 5)); + assert_eq!(false, Point::new(5,5).check_for_ship_collision(Point::new(6,6), South, 5)); + } + + #[test] + fn adjacency_check_works() { + assert_eq!(true, Point::new(5,5).is_adjacent(Point::new(4,5))); + assert_eq!(true, Point::new(5,5).is_adjacent(Point::new(6,5))); + assert_eq!(true, Point::new(5,5).is_adjacent(Point::new(5,4))); + assert_eq!(true, Point::new(5,5).is_adjacent(Point::new(5,6))); + + assert_eq!(false, Point::new(5,5).is_adjacent(Point::new(4,4))); + assert_eq!(false, Point::new(5,5).is_adjacent(Point::new(6,6))); + assert_eq!(false, Point::new(5,5).is_adjacent(Point::new(6,4))); + assert_eq!(false, Point::new(5,5).is_adjacent(Point::new(4,6))); + assert_eq!(false, Point::new(5,5).is_adjacent(Point::new(5,5))); + + assert_eq!(false, Point::new(5,5).is_adjacent(Point::new(10,5))); + + } + + #[test] + fn point_on_4_lattice_works() { assert_eq!(true, Point::new(0,0).is_on_lattice(4)); assert_eq!(true, Point::new(4,0).is_on_lattice(4)); assert_eq!(true, Point::new(0,4).is_on_lattice(4)); assert_eq!(true, Point::new(4,4).is_on_lattice(4)); assert_eq!(true, Point::new(1,3).is_on_lattice(4)); - assert_eq!(true, Point::new(3,1).is_on_lattice(4)); + assert_eq!(true, Point::new(3,1).is_on_lattice(4)); + + assert_eq!(false, Point::new(0,1).is_on_lattice(4)); + assert_eq!(false, Point::new(0,2).is_on_lattice(4)); + assert_eq!(false, Point::new(0,3).is_on_lattice(4)); + assert_eq!(false, Point::new(1,0).is_on_lattice(4)); + assert_eq!(false, Point::new(2,0).is_on_lattice(4)); + assert_eq!(false, Point::new(3,0).is_on_lattice(4)); + } + + #[test] + fn point_on_2_lattice_works() { + assert_eq!(true, Point::new(0,0).is_on_lattice(2)); + assert_eq!(true, Point::new(2,0).is_on_lattice(2)); + assert_eq!(true, Point::new(0,2).is_on_lattice(2)); + assert_eq!(true, Point::new(2,2).is_on_lattice(2)); + assert_eq!(true, Point::new(1,1).is_on_lattice(2)); + + assert_eq!(false, Point::new(0,1).is_on_lattice(2)); + assert_eq!(false, Point::new(1,0).is_on_lattice(2)); } } -- cgit v1.2.3