85 lines
2.7 KiB
Python
85 lines
2.7 KiB
Python
import pytest
|
||
from src.classes.age import Age
|
||
from src.classes.cultivation import Realm
|
||
|
||
class TestAgeDeathMechanic:
|
||
"""测试新的寿命与老死机制"""
|
||
|
||
def test_safe_zone(self):
|
||
"""测试安全期:年龄 < 寿命上限 - 20"""
|
||
# 练气期寿命 100
|
||
age = Age(50, Realm.Qi_Refinement)
|
||
assert age.max_lifespan == 100
|
||
|
||
# 50岁肯定安全
|
||
assert age.get_death_probability() == 0.0
|
||
|
||
# 79岁也安全 (100 - 20 = 80)
|
||
age.age = 79
|
||
assert age.get_death_probability() == 0.0
|
||
|
||
def test_twilight_zone(self):
|
||
"""测试衰退期:寿命上限 - 20 <= 年龄 < 寿命上限"""
|
||
# 练气期寿命 100,衰退期开始于 80
|
||
age = Age(80, Realm.Qi_Refinement)
|
||
|
||
# 刚进入衰退期
|
||
prob_80 = age.get_death_probability()
|
||
assert prob_80 == 0.0 # (80 - 80) * 0.005 = 0
|
||
|
||
# 81岁
|
||
age.age = 81
|
||
prob_81 = age.get_death_probability()
|
||
assert prob_81 > 0.0
|
||
assert prob_81 == 0.005 # (81 - 80) * 0.005
|
||
|
||
# 90岁
|
||
age.age = 90
|
||
prob_90 = age.get_death_probability()
|
||
assert prob_90 == 0.05 # (90 - 80) * 0.005
|
||
|
||
# 99岁
|
||
age.age = 99
|
||
prob_99 = age.get_death_probability()
|
||
assert prob_99 > prob_90
|
||
assert prob_99 < 1.0
|
||
|
||
def test_doom_zone(self):
|
||
"""测试大限:年龄 >= 寿命上限"""
|
||
age = Age(100, Realm.Qi_Refinement)
|
||
|
||
# 刚好到达大限
|
||
assert age.get_death_probability() == 1.0
|
||
|
||
# 超过大限
|
||
age.age = 101
|
||
assert age.get_death_probability() == 1.0
|
||
|
||
def test_realm_breakthrough_extends_life(self):
|
||
"""测试突破境界延长寿命,脱离危险区"""
|
||
# 练气期 90岁 (寿命100),处于危险区
|
||
age = Age(90, Realm.Qi_Refinement)
|
||
assert age.get_death_probability() > 0.0
|
||
|
||
# 突破到筑基期 (寿命150)
|
||
age.update_realm(Realm.Foundation_Establishment)
|
||
assert age.max_lifespan == 150
|
||
|
||
# 90岁对于150岁上限来说,远未到危险区 (150-20=130)
|
||
assert age.get_death_probability() == 0.0
|
||
|
||
def test_lifespan_reduction_items(self):
|
||
"""测试寿命上限减少导致提前进入危险区"""
|
||
age = Age(50, Realm.Qi_Refinement)
|
||
assert age.max_lifespan == 100
|
||
|
||
# 遭受重创,折寿40年 -> 上限变60
|
||
age.decrease_max_lifespan(40)
|
||
assert age.max_lifespan == 60
|
||
|
||
# 50岁对于60岁上限来说,已进入危险区 (60-20=40)
|
||
assert age.get_death_probability() > 0.0
|
||
# (50 - 40) * 0.005 = 0.05
|
||
assert age.get_death_probability() == 0.05
|
||
|