82 lines
2.6 KiB
Python
82 lines
2.6 KiB
Python
import pytest
|
||
from src.classes.cultivation import CultivationProgress, Realm, Stage, REALM_ORDER, LEVELS_PER_REALM
|
||
|
||
def test_breakthrough_normal(dummy_avatar):
|
||
"""
|
||
测试正常突破逻辑:从练气圆满突破到筑基前期
|
||
"""
|
||
# 练气圆满是 30 级 (LEVELS_PER_REALM * 1)
|
||
qi_max_level = 30
|
||
|
||
# 设置角色状态
|
||
cp = CultivationProgress(level=qi_max_level, exp=0)
|
||
dummy_avatar.cultivation_progress = cp
|
||
|
||
# 验证当前状态
|
||
assert cp.realm == Realm.Qi_Refinement
|
||
assert cp.is_in_bottleneck() is True
|
||
assert cp.can_break_through() is True
|
||
|
||
# 执行突破
|
||
cp.break_through()
|
||
|
||
# 验证突破后状态
|
||
# 应该升级到 31 级
|
||
assert cp.level == 31
|
||
# 境界应该是 筑基
|
||
assert cp.realm == Realm.Foundation_Establishment
|
||
# 阶段应该是 前期
|
||
assert cp.stage == Stage.Early_Stage
|
||
# 不再处于瓶颈
|
||
assert cp.is_in_bottleneck() is False
|
||
|
||
def test_breakthrough_max_realm_limit(dummy_avatar):
|
||
"""
|
||
测试最高境界限制:元婴圆满(目前最高等级)不能再突破
|
||
"""
|
||
# 计算最高等级
|
||
# 目前有 4 个境界,每个 30 级,最高 120 级
|
||
max_level = len(REALM_ORDER) * LEVELS_PER_REALM
|
||
|
||
# 设置角色状态为最高等级
|
||
cp = CultivationProgress(level=max_level, exp=0)
|
||
dummy_avatar.cultivation_progress = cp
|
||
|
||
# 验证当前状态
|
||
assert cp.realm == Realm.Nascent_Soul
|
||
# 理论上它是 30/60/90/120,模 30 为 0,所以 is_in_bottleneck 会返回 True
|
||
assert cp.is_in_bottleneck() is True
|
||
|
||
# 关键测试点:can_break_through 应该返回 False,因为已经封顶了
|
||
assert cp.can_break_through() is False
|
||
|
||
def test_not_in_bottleneck(dummy_avatar):
|
||
"""
|
||
测试非瓶颈期不能突破
|
||
"""
|
||
# 随便设一个中间等级,比如 15 级(练气中期)
|
||
cp = CultivationProgress(level=15, exp=0)
|
||
dummy_avatar.cultivation_progress = cp
|
||
|
||
assert cp.is_in_bottleneck() is False
|
||
assert cp.can_break_through() is False
|
||
|
||
def test_breakthrough_intermediate_bottleneck(dummy_avatar):
|
||
"""
|
||
测试中间境界的突破:筑基圆满 -> 金丹
|
||
"""
|
||
# 筑基圆满是 60 级
|
||
foundation_max_level = 60
|
||
|
||
cp = CultivationProgress(level=foundation_max_level, exp=0)
|
||
dummy_avatar.cultivation_progress = cp
|
||
|
||
assert cp.realm == Realm.Foundation_Establishment
|
||
assert cp.can_break_through() is True
|
||
|
||
cp.break_through()
|
||
|
||
assert cp.level == 61
|
||
assert cp.realm == Realm.Core_Formation
|
||
assert cp.stage == Stage.Early_Stage
|