Skip to content
This repository was archived by the owner on Apr 24, 2025. It is now read-only.

Commit 39e023b

Browse files
committed
add unit tests for play again feature
1 parent fe6666c commit 39e023b

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

projects/Snake Game/src/game.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,4 @@ def play_again(self):
9595
def restart_game(self):
9696
self.snake = Snake()
9797
self.score = 0
98-
self.place_food()
98+
self.place_food()

projects/Snake Game/tests/test_game.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import unittest
22
from unittest.mock import patch, MagicMock
3+
import pygame
34
from game import Game
45
from constants import GameSettings, Point
6+
from snake import Snake
57

68

79
class TestGame(unittest.TestCase):
@@ -48,6 +50,35 @@ def test_place_food(self):
4850
self.game.place_food()
4951
self.assertNotIn(self.game.food, self.game.snake.blocks)
5052

53+
@patch('pygame.event.get')
54+
def test_play_again_y(self, mock_event_get):
55+
mock_event_get.return_value = [MagicMock(type=pygame.KEYDOWN, key=pygame.K_y)]
56+
value = self.game.play_again()
57+
self.assertTrue(value)
58+
59+
@patch('pygame.event.get')
60+
def test_play_again_return(self, mock_event_get):
61+
mock_event_get.return_value = [MagicMock(type=pygame.KEYDOWN, key=pygame.K_RETURN)]
62+
value = self.game.play_again()
63+
self.assertTrue(value)
64+
65+
@patch('pygame.event.get')
66+
def test_play_again_n(self, mock_event_get):
67+
mock_event_get.return_value = [MagicMock(type=pygame.KEYDOWN, key=pygame.K_n)]
68+
69+
@patch('pygame.event.get')
70+
def test_play_again_esc(self, mock_event_get):
71+
mock_event_get.return_value = [MagicMock(type=pygame.KEYDOWN, key=pygame.K_ESCAPE)]
72+
73+
def test_restart_game(self):
74+
self.game.snake = Snake(init_length=10)
75+
self.game.score = 10
76+
77+
self.game.restart_game()
78+
self.assertEqual(len(self.game.snake.blocks), 3)
79+
self.assertEqual(self.game.score, 0)
80+
self.assertIsNotNone(self.game.food)
81+
5182

5283
if __name__ == '__main__':
5384
unittest.main()

0 commit comments

Comments
 (0)