fixing leveling xp reporting
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user