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)