This is a simple implementation of a tic-tac-toe using TDD, and a contra-variance (https://blog.cleancoder.com/uncle-bob/2017/10/03/TestContravariance.html) approach between tests and implementation.
- the game is played on a grid that's 3x3 squares;
- players take turns putting on a mark at a time in empty squares;
- the first player to get 3 of her marks in a row (up, down, across, or diagonally) is the winner;
- when all 9 squares are full, the game is over.
- if no player has 3 marks in a row, the game ends in a tie.