aboutsummaryrefslogtreecommitdiff
path: root/rust/queen-attack/tests/queen-attack.rs
diff options
context:
space:
mode:
Diffstat (limited to 'rust/queen-attack/tests/queen-attack.rs')
-rw-r--r--rust/queen-attack/tests/queen-attack.rs78
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 @@
1use queen_attack::*;
2
3#[test]
4fn chess_position_on_the_board_is_some() {
5 assert!(ChessPosition::new(2, 4).is_some());
6}
7
8#[test]
9fn 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]
20fn queen_is_created_with_a_valid_position() {
21 Queen::new(ChessPosition::new(2, 4).unwrap());
22}
23
24#[test]
25fn 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]
33fn 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]
41fn 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]
49fn 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]
57fn 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]
65fn 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]
73fn 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}