From fc1d4fbb98323b34829da9393f366fb07d2f1605 Mon Sep 17 00:00:00 2001 From: Federico Igne Date: Mon, 4 Jan 2021 13:59:27 +0000 Subject: [rust] Queen Attack --- rust/queen-attack/tests/queen-attack.rs | 78 +++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 rust/queen-attack/tests/queen-attack.rs (limited to 'rust/queen-attack/tests/queen-attack.rs') 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 @@ +use queen_attack::*; + +#[test] +fn chess_position_on_the_board_is_some() { + assert!(ChessPosition::new(2, 4).is_some()); +} + +#[test] +fn chess_position_off_the_board_is_none() { + assert!(ChessPosition::new(-1, 2).is_none()); + + assert!(ChessPosition::new(8, 2).is_none()); + + assert!(ChessPosition::new(5, -1).is_none()); + + assert!(ChessPosition::new(5, 8).is_none()); +} + +#[test] +fn queen_is_created_with_a_valid_position() { + Queen::new(ChessPosition::new(2, 4).unwrap()); +} + +#[test] +fn queens_that_can_not_attack() { + let white_queen = Queen::new(ChessPosition::new(2, 4).unwrap()); + let black_queen = Queen::new(ChessPosition::new(6, 6).unwrap()); + + assert!(!white_queen.can_attack(&black_queen)); +} + +#[test] +fn queens_on_the_same_rank_can_attack() { + let white_queen = Queen::new(ChessPosition::new(2, 4).unwrap()); + let black_queen = Queen::new(ChessPosition::new(2, 6).unwrap()); + + assert!(white_queen.can_attack(&black_queen)); +} + +#[test] +fn queens_on_the_same_file_can_attack() { + let white_queen = Queen::new(ChessPosition::new(4, 5).unwrap()); + let black_queen = Queen::new(ChessPosition::new(3, 5).unwrap()); + + assert!(white_queen.can_attack(&black_queen)); +} + +#[test] +fn queens_on_the_same_diagonal_can_attack_one() { + let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); + let black_queen = Queen::new(ChessPosition::new(0, 4).unwrap()); + + assert!(white_queen.can_attack(&black_queen)); +} + +#[test] +fn queens_on_the_same_diagonal_can_attack_two() { + let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); + let black_queen = Queen::new(ChessPosition::new(3, 1).unwrap()); + + assert!(white_queen.can_attack(&black_queen)); +} + +#[test] +fn queens_on_the_same_diagonal_can_attack_three() { + let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); + let black_queen = Queen::new(ChessPosition::new(1, 1).unwrap()); + + assert!(white_queen.can_attack(&black_queen)); +} + +#[test] +fn queens_on_the_same_diagonal_can_attack_four() { + let white_queen = Queen::new(ChessPosition::new(2, 2).unwrap()); + let black_queen = Queen::new(ChessPosition::new(5, 5).unwrap()); + + assert!(white_queen.can_attack(&black_queen)); +} -- cgit v1.2.3