fixing leveling xp reporting

This commit is contained in:
2025-11-30 18:20:40 -06:00
parent 805d04cf4e
commit 70b2b0f124
6 changed files with 131 additions and 12 deletions

View File

@@ -324,6 +324,7 @@ def test_add_experience_no_level_up(basic_character):
assert leveled_up == False
assert basic_character.level == 1
assert basic_character.experience == 50
assert basic_character.total_xp == 50 # Cumulative XP tracked
def test_add_experience_with_level_up(basic_character):
@@ -333,7 +334,8 @@ def test_add_experience_with_level_up(basic_character):
assert leveled_up == True
assert basic_character.level == 2
assert basic_character.experience == 0 # Reset
assert basic_character.experience == 0 # Current level progress resets
assert basic_character.total_xp == 100 # Cumulative XP preserved
def test_add_experience_with_overflow(basic_character):
@@ -343,7 +345,48 @@ def test_add_experience_with_overflow(basic_character):
assert leveled_up == True
assert basic_character.level == 2
assert basic_character.experience == 50 # Overflow
assert basic_character.experience == 50 # Overflow preserved
assert basic_character.total_xp == 150 # All XP tracked cumulatively
def test_xp_to_next_level_property(basic_character):
"""Test xp_to_next_level property calculation."""
# At level 1 with 0 XP, need 100 to level up
assert basic_character.xp_to_next_level == 100
# Add 30 XP
basic_character.add_experience(30)
assert basic_character.xp_to_next_level == 70 # 100 - 30
# Add 70 more to level up
basic_character.add_experience(70)
assert basic_character.level == 2
assert basic_character.experience == 0
# At level 2, need 282 XP to level up
assert basic_character.xp_to_next_level == 282
def test_total_xp_never_decreases(basic_character):
"""Test that total_xp is cumulative and never decreases."""
# Start at 0
assert basic_character.total_xp == 0
# Add XP multiple times
basic_character.add_experience(50)
assert basic_character.total_xp == 50
basic_character.add_experience(50)
assert basic_character.total_xp == 100
# Should have leveled up to level 2
assert basic_character.level == 2
assert basic_character.experience == 0 # Current progress reset
# Add more XP
basic_character.add_experience(100)
assert basic_character.total_xp == 200 # Still cumulative
# Even though experience resets on level-up, total_xp keeps growing
assert basic_character.total_xp >= basic_character.experience
def test_xp_calculation(basic_origin):
@@ -386,6 +429,7 @@ def test_character_serialization(basic_character):
basic_character.gold = 500
basic_character.level = 3
basic_character.experience = 100
basic_character.total_xp = 500 # Manually set for test
data = basic_character.to_dict()
@@ -394,7 +438,13 @@ def test_character_serialization(basic_character):
assert data["name"] == "Test Hero"
assert data["level"] == 3
assert data["experience"] == 100
assert data["total_xp"] == 500
assert data["gold"] == 500
# Check computed fields
assert "xp_to_next_level" in data
assert "xp_required_for_next_level" in data
assert data["xp_required_for_next_level"] == 519 # Level 3 requires 519 XP
assert data["xp_to_next_level"] == 419 # 519 - 100
def test_character_deserialization(basic_player_class, basic_origin):