Spaces:
Runtime error
Runtime error
File size: 2,693 Bytes
4562618 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
import pytest
import pygame
from src.game import Game
@pytest.fixture
def game():
pygame.init()
screen = pygame.display.set_mode((800, 600))
return Game(screen)
def test_game_initialization(game):
assert game.current_grade == 1
assert game.score == 0
assert game.lives == 3
assert game.answer_input == ""
assert game.feedback == ""
assert game.feedback_scale == 1.0 # Test new feedback scale initialization
def test_correct_answer(game):
initial_score = game.score
game.problem.answer = 42
game.answer_input = "42"
game.check_answer()
assert game.score > initial_score
assert game.feedback == "Correct!"
assert game.feedback_color == game.GREEN
assert game.feedback_scale == 1.5 # Test feedback animation scale
def test_wrong_answer(game):
initial_lives = game.lives
game.problem.answer = 42
game.answer_input = "24"
game.check_answer()
assert game.lives == initial_lives - 1
assert game.feedback == "Wrong answer!"
assert game.feedback_color == game.RED
assert game.feedback_scale == 1.3 # Test feedback animation scale
def test_invalid_answer(game):
game.answer_input = "abc"
game.check_answer()
assert game.feedback == "Please enter a valid number"
assert game.feedback_color == game.RED
assert game.feedback_scale == 1.2 # Test feedback animation scale
def test_grade_progression(game):
# Set score just below threshold for level up
game.score = 99
game.current_grade = 1
game.problem.answer = 42
game.answer_input = "42"
game.check_answer()
assert game.current_grade == 2
assert game.feedback == "Level Up! Now at Grade 2"
assert game.feedback_color == game.GOLD # Test gold color for level up
assert game.feedback_scale == 2.0 # Test larger scale for level up
def test_game_over(game):
game.lives = 1
game.problem.answer = 42
game.answer_input = "24"
game.check_answer()
assert game.lives == 0
def test_ui_colors(game):
# Test that all required colors are defined
assert hasattr(game, 'WHITE')
assert hasattr(game, 'BLACK')
assert hasattr(game, 'GREEN')
assert hasattr(game, 'RED')
assert hasattr(game, 'BLUE')
assert hasattr(game, 'PURPLE')
assert hasattr(game, 'GOLD')
assert hasattr(game, 'BACKGROUND_TOP')
assert hasattr(game, 'BACKGROUND_BOTTOM')
def test_heart_shape(game):
# Test that heart points are properly initialized
assert hasattr(game, 'heart_points')
assert len(game.heart_points) > 0
# Test that points are properly transformed
assert all(isinstance(point, tuple) and len(point) == 2 for point in game.heart_points) |