diff --git a/exercises/queen-attack/example.rb b/exercises/queen-attack/example.rb index 35b2de1074..9c4b0105be 100644 --- a/exercises/queen-attack/example.rb +++ b/exercises/queen-attack/example.rb @@ -3,7 +3,9 @@ class Queens def initialize(positions = {}) @white = positions.fetch(:white) { [0, 3] } @black = positions.fetch(:black) { [7, 3] } - fail ArgumentError if white == black + fail ArgumentError, "Queens cannot be placed on the same spot" if white == black + fail ArgumentError, "Positions must be positive numbers" if (white + black).any? { |p| p < 0 } + fail ArgumentError, "Positions must have square on board" if (white + black).any? { |p| p > 7 } end def attack? diff --git a/exercises/queen-attack/queen_attack_test.rb b/exercises/queen-attack/queen_attack_test.rb index 2fe1c0d37c..fa5f59d0ed 100755 --- a/exercises/queen-attack/queen_attack_test.rb +++ b/exercises/queen-attack/queen_attack_test.rb @@ -34,6 +34,34 @@ def test_cannot_occupy_same_space end end + def test_queen_must_have_positive_row + skip + assert_raises ArgumentError do + Queens.new(white: [-2, 2]) + end + end + + def test_queen_must_have_positive_column + skip + assert_raises ArgumentError do + Queens.new(white: [2, -2]) + end + end + + def test_queen_must_have_row_on_board + skip + assert_raises ArgumentError do + Queens.new(white: [8, 4]) + end + end + + def test_queen_must_have_column_on_board + skip + assert_raises ArgumentError do + Queens.new(white: [4, 8]) + end + end + def test_string_representation skip queens = Queens.new(white: [2, 4], black: [6, 6]) @@ -100,25 +128,25 @@ def test_can_attack_on_same_column assert queens.attack? end - def test_can_attack_on_diagonal + def test_can_attack_on_first_diagonal skip queens = Queens.new(white: [1, 1], black: [6, 6]) assert queens.attack? end - def test_can_attack_on_other_diagonal + def test_can_attack_on_second_diagonal skip queens = Queens.new(white: [0, 6], black: [1, 7]) assert queens.attack? end - def test_can_attack_on_yet_another_diagonal + def test_can_attack_on_third_diagonal skip queens = Queens.new(white: [4, 1], black: [6, 3]) assert queens.attack? end - def test_can_attack_on_a_diagonal_slanted_the_other_way + def test_can_attack_on_fourth_diagonal skip queens = Queens.new(white: [6, 1], black: [1, 6]) assert queens.attack?