Files
TicTacToe/tests/test_tictactoe.py

103 lines
3.1 KiB
Python
Raw Normal View History

2025-09-22 19:43:52 +02:00
from unittest.mock import Mock
import unittest
import tictactoe
from unittest.mock import patch
class MockPrinter:
# Define mock methods here that mimic the behavior of the Printer class...
def printfield(self, ifield):
pass # Mock methods do nothing
def occupied(self):
pass
def aicalc(self):
pass
def aimoved(self, best_moev):
pass
def playermove(self, player1, player1_char, player2_char):
next_move = (0, 1)
return next_move
class TestTicTacToe(unittest.TestCase):
def setUp(self):
self.game = tictactoe.Tictactoe()
self.game.printer = MockPrinter()
'''
@patch('builtins.input', side_effect=[0, 1]) # Mock user inputs 0 for x and 1 for y
def test_turn(self, mock_input):
# Initialize the field with empty spots
self.game.ifield = [[" ", " ", " "], [" ", " ", " "], [" ", " ", " mock_input"]]
player1 = True
player1_char = "X"
player2_char = "O"
calling_1 = mock_input()
expected_result = (0, 1)
#result = self.game.turn(player1, player1_char, player2_char)
result = self.game.turn()
self.assertEqual(result, expected_result)'''
def test_check_win(self) -> None:
player1_char = 'X'
player2_char = 'O'
# Testing player 1 win condition
field = [["X", "|", " ", "|", " "],
["", "+", "", "+", ""],
["X", "|", " ", "|", " "],
["", "+", "", "+", ""],
["X", "|", " ", "|", " "]]
result = self.game.check_win(field, player1_char, player2_char)
self.assertEqual(result, (1, 0))
# Testing player 2 win condition
field = [["O", "|", " ", "|", " "],
["", "+", "", "+", ""],
["O", "|", " ", "|", " "],
["", "+", "", "+", ""],
["O", "|", " ", "|", " "]]
result = self.game.check_win(field, player1_char, player2_char)
self.assertEqual(result, (0, 1))
# Testing draw condition
field = [["X", "|", "O", "|", "X"],
["", "+", "", "+", ""],
["X", "|", "O", "|", "O"],
["", "+", "", "+", ""],
["O", "|", "X", "|", "X"]]
result = self.game.check_win(field, player1_char, player2_char)
self.assertEqual(result, (1, 1))
# Testing no win condition
field = [[" ", "|", " ", "|", " "],
["", "+", "", "+", ""],
[" ", "|", " ", "|", " "],
["", "+", "", "+", ""],
[" ", "|", " ", "|", " "]]
result = self.game.check_win(field, player1_char, player2_char)
self.assertEqual(result, (0, 0))
def test_play_game(self):
expected_result = True
# Call the method you want to test
result = self.tictactoe.play_game()
# Add assertions to check the result
self.assertEqual(result, expected_result)
if __name__ == '__main__':
unittest.main()