summaryrefslogtreecommitdiff
path: root/src/math.rs
diff options
context:
space:
mode:
authorJustin Worthe <justin.worthe@gmail.com>2017-05-27 18:59:36 +0200
committerJustin Worthe <justin.worthe@gmail.com>2017-05-27 18:59:36 +0200
commitfe1c30d52f643843004230f804cfd55f356d0d6d (patch)
tree2c83ac4a0aaa2438e12b0ef67bb583040ddb072e /src/math.rs
parent2da686b462c0053e408e6814d7d57d00b55a2245 (diff)
Added some tests for math
Diffstat (limited to 'src/math.rs')
-rw-r--r--src/math.rs92
1 files changed, 90 insertions, 2 deletions
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));
}
}