diff --git a/exercises/practice/state-of-tic-tac-toe/.meta/Example.cs b/exercises/practice/state-of-tic-tac-toe/.meta/Example.cs index 782932767..b651699bb 100644 --- a/exercises/practice/state-of-tic-tac-toe/.meta/Example.cs +++ b/exercises/practice/state-of-tic-tac-toe/.meta/Example.cs @@ -14,6 +14,8 @@ public State State { if (Moves.GetValueOrDefault('X', 0) - Moves.GetValueOrDefault('O', 0) > 1 || Moves.GetValueOrDefault('O', 0) > Moves.GetValueOrDefault('X', 0) || + Winners.Contains('X') && Moves.GetValueOrDefault('X', 0) == Moves.GetValueOrDefault('O', 0) || + Winners.Contains('O') && Moves.GetValueOrDefault('X', 0) > Moves.GetValueOrDefault('O', 0) || Winners.Distinct().Count() > 1) return State.Invalid; diff --git a/exercises/practice/state-of-tic-tac-toe/.meta/tests.toml b/exercises/practice/state-of-tic-tac-toe/.meta/tests.toml index 8fc25e211..5f574b2a1 100644 --- a/exercises/practice/state-of-tic-tac-toe/.meta/tests.toml +++ b/exercises/practice/state-of-tic-tac-toe/.meta/tests.toml @@ -99,3 +99,9 @@ reimplements = "b1dc8b13-46c4-47db-a96d-aa90eedc4e8d" [4801cda2-f5b7-4c36-8317-3cdd167ac22c] description = "Invalid boards -> Invalid board: players kept playing after a win" + +[5a84757a-fc86-4328-aec9-a5759e6ed35d] +description = "Invalid boards -> Invalid board: O kept playing after X wins" + +[cf25543d-583a-4656-b9ab-f82dc00a4a02] +description = "Invalid boards -> Invalid board: X kept playing after O wins" diff --git a/exercises/practice/state-of-tic-tac-toe/StateOfTicTacToeTests.cs b/exercises/practice/state-of-tic-tac-toe/StateOfTicTacToeTests.cs index 0c278a709..96c5fda90 100644 --- a/exercises/practice/state-of-tic-tac-toe/StateOfTicTacToeTests.cs +++ b/exercises/practice/state-of-tic-tac-toe/StateOfTicTacToeTests.cs @@ -323,4 +323,28 @@ public void Invalid_boards_invalid_board_players_kept_playing_after_a_win() var game = new TicTacToe(board); Assert.Equal(State.Invalid, game.State); } + + [Fact(Skip = "Remove this Skip property to run this test")] + public void Invalid_boards_invalid_board_o_kept_playing_after_x_wins() + { + string[] board = [ + "OO ", + "XXX", + " O " + ]; + var game = new TicTacToe(board); + Assert.Equal(State.Invalid, game.State); + } + + [Fact(Skip = "Remove this Skip property to run this test")] + public void Invalid_boards_invalid_board_x_kept_playing_after_o_wins() + { + string[] board = [ + "XX ", + "OOO", + " XX" + ]; + var game = new TicTacToe(board); + Assert.Equal(State.Invalid, game.State); + } }