Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions AI TicTacToe/test_Choose_first_1aac01090c.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
from unittest.mock import patch
from TicTacToe import choose_first

class TestChooseFirst(unittest.TestCase):

# Test when Player 1 is chosen by the random function
@patch('TicTacToe.random.choice', return_value='Player 1')
def test_Choose_first_1aac01090c_player1(self, mock_random_choice):
result = choose_first()
self.assertEqual(result, 'Player 1', 'choose_first() did not return Player 1 when the random function did.')

# Test when Player 2 is chosen by the random function
@patch('TicTacToe.random.choice', return_value='Player 2')
def test_Choose_first_1aac01090c_player2(self, mock_random_choice):
result = choose_first()
self.assertEqual(result, 'Player 2', 'choose_first() did not return Player 2 when the random function did.')


if __name__ == "__main__":
unittest.main()
56 changes: 56 additions & 0 deletions AI TicTacToe/test_Display_board_b762c273fe.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
import io
import sys
from contextlib import contextmanager
from TicTacToe import display_board

class TestDisplayBoard(unittest.TestCase):

@contextmanager
def assertPrints(self, expected_output):
old_stdout = sys.stdout
sys.stdout = output = io.StringIO()

try:
yield
self.assertEqual(output.getvalue(), expected_output)
finally:
sys.stdout = old_stdout

def test_Display_board_b762c273fe(self):
# Case: Test with regular valid board
board = ['#'] + list('123456789')
expected_output = (
'-------------\n'
'| 7 | 8 | 9 |\n'
'-------------\n'
'| 4 | 5 | 6 |\n'
'-------------\n'
'| 1 | 2 | 3 |\n'
'-------------\n'
)

with self.assertPrints(expected_output):
display_board(board)

# Case: Test with all character as X (player 1)
board = ['#'] + ['X']*9
expected_output = (
'-------------\n'
'| X | X | X |\n'
'-------------\n'
'| X | X | X |\n'
'-------------\n'
'| X | X | X |\n'
'-------------\n'
)

with self.assertPrints(expected_output):
display_board(board)

# TODO: add more test cases as needed

if __name__ == '__main__':
unittest.main()
25 changes: 25 additions & 0 deletions AI TicTacToe/test_Full_board_check_d5fc721cf3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
from TicTacToe import full_board_check

class TestTicTacToe(unittest.TestCase):

def test_Full_board_check_d5fc721cf3(self):
# Scenario: When all positions on the board is filled
test_board = [' ', 'X', 'O', 'X', 'O', 'X', 'O', 'X', 'O', 'X']
result = full_board_check(test_board)
self.assertTrue(result,'Test Failed: The board was expected to be full, but it is not.')

# Scenario: Checking with a partially filled board
test_board = [' ', 'X', 'O', 'X', 'O', ' ', 'O', 'X', ' ', 'X']
result = full_board_check(test_board)
self.assertFalse(result, 'Test Failed: The board was expected to be not full, but it is.')

# Handling Edge Case: Empty Board should return False since all positions are ' '
test_board = [' ']*10
result = full_board_check(test_board)
self.assertFalse(result, 'Test Failed: The board was expected to be not full, but it is.')

if __name__ == '__main__':
unittest.main()
25 changes: 25 additions & 0 deletions AI TicTacToe/test_Place_marker_fe91694d10.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
from TicTacToe import place_marker

class TestTicTacToe(unittest.TestCase):

def setUp(self):
self.board = [' '] * 10

def test_Place_marker_fe91694d10(self):
# Test case1: Verify that the marker is properly placed in the correct position
place_marker(self.board, 'X', 5)
self.assertEqual(self.board[5], 'X')

# Test case2: Verify that an Error is thrown when the position is already taken
with self.assertRaises(ValueError):
place_marker(self.board, 'X', 5) # This position is already taken

# Test case3: Verify that an Error is thrown when the position is out of bound
with self.assertRaises(IndexError):
place_marker(self.board, 'X', 10) # Position out of bound

if __name__ == "__main__":
unittest.main()
31 changes: 31 additions & 0 deletions AI TicTacToe/test_Play_tic_tac_toe_c1b9c031dc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
from unittest.mock import patch
from TicTacToe import play_tic_tac_toe

class TestTicTacToe(unittest.TestCase):

# Test that the Game is Initialized Properly
@patch('TicTacToe.player_input', return_value=('X', 'O'))
@patch('TicTacToe.choose_first', return_value='Player 1')
@patch('TicTacToe.input', return_value='y')
def test_GameInitialization(self, input_patch, choose_first_patch, player_input_patch):
with patch('TicTacToe.print') as _:
play_tic_tac_toe()
choose_first_patch.assert_called_once()
player_input_patch.assert_called_once()
input_patch.assert_called_once_with('Are you ready to play? Enter y or n: ')

# Test a Scenario Where Player Chooses Not to Play
@patch('TicTacToe.player_input', return_value=('X', 'O'))
@patch('TicTacToe.choose_first', return_value='Player 1')
@patch('TicTacToe.input', return_value='n')
def test_PlayerChooseNotToPlay(self, input_patch, choose_first_patch, player_input_patch):
with patch('TicTacToe.print') as print_patch:
play_tic_tac_toe()

print_patch.assert_any_call("BYE! Have a good day.")

if __name__ == '__main__':
unittest.main()
38 changes: 38 additions & 0 deletions AI TicTacToe/test_Player_choice_8794c9cf18.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
from unittest.mock import patch
from TicTacToe import player_choice, space_check

# Assuming that the function space_check works as follows:
# def space_check(board, position):
# return board[position-1] == ' '

class TestPlayerChoice(unittest.TestCase):

def test_Player_choice_8794c9cf18(self):
board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']

# we'll input 5 when the function calls input.
with patch('builtins.input', return_value='5'):
self.assertEqual(player_choice(board), 5, 'Choice not correct')

# we'll input 1, but the place is occupied, then we input 2
board = ['X', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']

with patch('builtins.input', side_effect=['1','2']):
self.assertEqual(player_choice(board), 2, 'Did not choose correct free position')

# we'll input a number out of range, then we input 1
board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']

with patch('builtins.input', side_effect=['10','1']):
self.assertEqual(player_choice(board), 1, 'Did not handle input out of range')

# we'll input a non integer value, then we input 1
# This can only be tested if input validation handling is in place in player_choice function
with patch('builtins.input', side_effect=['a','1']):
self.assertEqual(player_choice(board), 1, 'Did not handle non integer input')

if __name__ == '__main__':
unittest.main()
34 changes: 34 additions & 0 deletions AI TicTacToe/test_Player_input_0b9937438a.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
from unittest.mock import patch
from TicTacToe import player_input # Importing necessary modules and the function to be tested

class TestPlayerInput(unittest.TestCase): # Test case class inherits from unittest.TestCase

@patch("builtins.input", return_value='X') # Using mocking to simulate user input as 'X'
def test_player_input_0b9937438a_input_X(self, input): # First test case
self.assertEqual(player_input(), ('X', 'O')) # If player1 chooses 'X', player2 should be assigned 'O'

@patch("builtins.input", return_value='O') # Using mocking to simulate user input as 'O'
def test_player_input_0b9937438a_input_O(self, input): # Second test case
self.assertEqual(player_input(), ('O', 'X')) # If player1 chooses 'O', player2 should be assigned 'X'

@patch("builtins.input", side_effect=['A', 'B', 'X']) # Using mocking to simulate multiple user inputs. Incorrect inputs followed by correct input 'X'
def test_player_input_invalid_inputs_then_X(self, input): # Third test case
self.assertEqual(player_input(), ('X', 'O')) # Even after invalid inputs, upon choosing 'X', player2 should be assigned 'O'

@patch("builtins.input", side_effect=['A', 'B', 'O']) # Using mocking to simulate multiple user inputs. Incorrect inputs followed by correct input 'O'
def test_player_input_invalid_inputs_then_O(self, input): # Fourth test case
self.assertEqual(player_input(), ('O', 'X')) # Even after invalid inputs, upon choosing 'O', player2 should be assigned 'X'

@patch("builtins.input", return_value='x') # Using mocking to simulate lowercase user input 'x'
def test_player_input_lowercase_x(self, input): # Fifth test case
self.assertEqual(player_input(), ('X', 'O')) # The function should accept lowercase input also

@patch("builtins.input", return_value='o') # Using mocking to simulate lowercase user input 'o'
def test_player_input_lowercase_o(self, input): # Sixth test case
self.assertEqual(player_input(), ('O', 'X')) # The function should accept lowercase input also

if __name__ == '__main__':
unittest.main() # To make the file executable from the command line
26 changes: 26 additions & 0 deletions AI TicTacToe/test_Replay_5a38c039b8.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
from unittest import mock
from TicTacToe import replay

class TestReplay(unittest.TestCase):
def test_Replay_5a38c039b8(self):
# Test case 1, where the user wants to play again
with mock.patch('builtins.input', return_value='Yes'):
self.assertEqual(replay(), True)

# Test case 2, where the user does not want to play again
with mock.patch('builtins.input', return_value='No'):
self.assertEqual(replay(), False)

# Edge case, test with non-English characters
with mock.patch('builtins.input', return_value='ja'):
self.assertEqual(replay(), False)

# Edge case, test with special characters
with mock.patch('builtins.input', return_value='!!!'):
self.assertEqual(replay(), False)

if __name__ == '__main__':
unittest.main()
30 changes: 30 additions & 0 deletions AI TicTacToe/test_Space_check_2323a5cd61.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

# Let's import the necessary packages
import unittest
from TicTacToe import space_check

# define a class in which the tests will run,
# it should inherit from unittest.TestCase
class TestCheckSpace(unittest.TestCase):

# The test method should start with the word ‘test’
def test_Space_check_2323a5cd61(self):

# Log to denote start of test method
print("Running test_Space_check_2323a5cd61")

# Given
board = [' ' for _ in range(9)]

# Then
self.assertEqual(space_check(board, 2), True)

# Setting a position and checking the space_check function
board[2] = 'X'
self.assertEqual(space_check(board, 2), False)

if __name__ == '__main__':

# Start the unit test
unittest.main()
36 changes: 36 additions & 0 deletions AI TicTacToe/test_Win_check_8bf2ef15c2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Test generated by RoostGPT for test python-test-23 using AI Type Azure Open AI and AI Model roost-gpt4-32k

import unittest
from TicTacToe import win_check

class TestWinCheck(unittest.TestCase):

def test_Win_check_8bf2ef15c2(self):
# test case 1 - winning case
board = ['#', 'X', 'X', 'X', '4', '5', '6', '7', '8', '9'] # Winning Row
mark = 'X'
self.assertTrue(win_check(board, mark)) # Expected to return True

# test case 2 - non-winning case
board = ['#', 'X', 'O', 'X', '4', '5', '6', '7', '8', '9'] # No Winning Row
mark = 'X'
self.assertFalse(win_check(board, mark)) # Expected to return False

# test case 3 - winning case
board = ['#', 'O', '2', '3', 'O', '5', '6', 'O', '8', '9'] # Winning Column
mark = 'O'
self.assertTrue(win_check(board, mark)) # Expected to return True

# test case 4 - non-winning case
board = ['#', 'O', '2', '3', 'X', '5', '6', 'O', '8', '9'] # No Winning Column
mark = 'O'
self.assertFalse(win_check(board, mark)) # Expected to return False

# test case 5 - invalid mark
board = ['#', 'X', '2', '3', 'X', '5', '6', 'X', '8', '9'] # Winning Column
mark = 'O'
self.assertFalse(win_check(board, mark)) # Expected to return False, because mark 'O' does not have a winning combination.


if __name__ == "__main__":
unittest.main()