diff options
| author | Federico Igne <git@federicoigne.com> | 2021-01-04 13:59:27 +0000 |
|---|---|---|
| committer | Federico Igne <git@federicoigne.com> | 2021-11-03 18:55:08 +0000 |
| commit | fc1d4fbb98323b34829da9393f366fb07d2f1605 (patch) | |
| tree | 4931923557f7976ba89f374b0c13cdf614b1984f /rust/queen-attack/tests/queen-attack.rs | |
| parent | b296156206a9b1bc4473c163bff44e6f2bc95573 (diff) | |
| download | exercism-fc1d4fbb98323b34829da9393f366fb07d2f1605.tar.gz exercism-fc1d4fbb98323b34829da9393f366fb07d2f1605.zip | |
[rust] Queen Attack
Diffstat (limited to 'rust/queen-attack/tests/queen-attack.rs')
| -rw-r--r-- | rust/queen-attack/tests/queen-attack.rs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/rust/queen-attack/tests/queen-attack.rs b/rust/queen-attack/tests/queen-attack.rs new file mode 100644 index 0000000..9eea61b --- /dev/null +++ b/rust/queen-attack/tests/queen-attack.rs | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | use queen_attack::*; | ||
| 2 | |||
| 3 | #[test] | ||
| 4 | fn chess_position_on_the_board_is_some() { | ||
| 5 | assert!(ChessPosition::new(2, 4).is_some()); | ||
| 6 | } | ||
| 7 | |||
| 8 | #[test] | ||
| 9 | fn chess_position_off_the_board_is_none() { | ||
| 10 | assert!(ChessPosition::new(-1, 2).is_none()); | ||
| 11 | |||
| 12 | assert!(ChessPosition::new(8, 2).is_none()); | ||
| 13 | |||
| 14 | assert!(ChessPosition::new(5, -1).is_none()); | ||
| 15 | |||
| 16 | assert!(ChessPosition::new(5, 8).is_none()); | ||
| 17 | } | ||
| 18 | |||
| 19 | #[test] | ||
| 20 | fn queen_is_created_with_a_valid_position() { | ||
| 21 | Queen::new(ChessPosition::new(2, 4).unwrap()); | ||
| 22 | } | ||
| 23 | |||
| 24 | #[test] | ||
| 25 | fn queens_that_can_not_attack() { | ||
| 26 | let white_queen = Queen::new(ChessPosition::new(2, 4).unwrap()); | ||
| 27 | let black_queen = Queen::new(ChessPosition::new(6, 6).unwrap()); | ||
| 28 | |||
| 29 | assert!(!white_queen.can_attack(&black_queen)); | ||
| 30 | } | ||
| 31 | |||
| 32 | #[test] | ||
| 33 | fn queens_on_the_same_rank_can_attack() { | ||
| 34 | let white_queen = Queen::new(ChessPosition::new(2, 4).unwrap()); | ||
| 35 | let black_queen = Queen::new(ChessPosition::new(2, 6).unwrap()); | ||
| 36 | |||
| 37 | assert!(white_queen.can_attack(&black_queen)); | ||
| 38 | } | ||
| 39 | |||
| 40 | #[test] | ||
| 41 | fn queens_on_the_same_file_can_attack() { | ||
| 42 | let white_queen = Queen::new(ChessPosition::new(4, 5).unwrap()); | ||
| 43 | let black_queen = Queen::new(ChessPosition::new(3, 5).unwrap()); | ||
| 44 | |||
| 45 | assert!(white_queen.can_attack(&black_queen)); | ||
| 46 | } | ||
| 47 | |||
| 48 | #[test] | ||
| 49 | fn queens_on_the_same_diagonal_can_attack_one() { | ||
| 50 | let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); | ||
| 51 | let black_queen = Queen::new(ChessPosition::new(0, 4).unwrap()); | ||
| 52 | |||
| 53 | assert!(white_queen.can_attack(&black_queen)); | ||
| 54 | } | ||
| 55 | |||
| 56 | #[test] | ||
| 57 | fn queens_on_the_same_diagonal_can_attack_two() { | ||
| 58 | let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); | ||
| 59 | let black_queen = Queen::new(ChessPosition::new(3, 1).unwrap()); | ||
| 60 | |||
| 61 | assert!(white_queen.can_attack(&black_queen)); | ||
| 62 | } | ||
| 63 | |||
| 64 | #[test] | ||
| 65 | fn queens_on_the_same_diagonal_can_attack_three() { | ||
| 66 | let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); | ||
| 67 | let black_queen = Queen::new(ChessPosition::new(1, 1).unwrap()); | ||
| 68 | |||
| 69 | assert!(white_queen.can_attack(&black_queen)); | ||
| 70 | } | ||
| 71 | |||
| 72 | #[test] | ||
| 73 | fn queens_on_the_same_diagonal_can_attack_four() { | ||
| 74 | let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); | ||
| 75 | let black_queen = Queen::new(ChessPosition::new(5, 5).unwrap()); | ||
| 76 | |||
| 77 | assert!(white_queen.can_attack(&black_queen)); | ||
| 78 | } | ||
