129 lines
3.4 KiB
GDScript
129 lines
3.4 KiB
GDScript
extends SceneTree
|
|
|
|
var passed: int = 0
|
|
var failed: int = 0
|
|
var _game_root: Node = null
|
|
var _test_complete: bool = false
|
|
|
|
func _init():
|
|
print("\n=== TEST: Research Level and XP Reset After Prestige ===\n")
|
|
TestUtils.set_test_name("research_prestige_reset")
|
|
|
|
var scene = load("res://docs/gyms/tiny_sword/tiny_sword.tscn")
|
|
change_scene_to_packed(scene)
|
|
|
|
await _wait()
|
|
|
|
_game_root = root.get_child(0)
|
|
|
|
var game_state: LevelGameState = _game_root.find_child("LevelGameState")
|
|
var prestige_manager = _game_root.find_child("PrestigeManager") as PrestigeManager
|
|
|
|
if game_state == null:
|
|
print("[ERROR] LevelGameState not found")
|
|
_print_summary()
|
|
_test_complete = true
|
|
quit(1)
|
|
return
|
|
|
|
if prestige_manager == null:
|
|
print("[ERROR] PrestigeManager not found")
|
|
_print_summary()
|
|
_test_complete = true
|
|
quit(1)
|
|
return
|
|
|
|
var research_id: StringName = &"gold_research"
|
|
|
|
var initial_xp: BigNumber = game_state.get_research_xp(research_id)
|
|
var initial_level: int = game_state.get_research_level(research_id)
|
|
print("[TARGET] initial_research_xp: mantissa=%s, exponent=%s" % [initial_xp.mantissa, initial_xp.exponent])
|
|
print("[TARGET] initial_research_level: %d" % initial_level)
|
|
|
|
TestUtils.assert_equals(
|
|
0,
|
|
initial_xp.mantissa,
|
|
"Initial research XP should be 0"
|
|
)
|
|
|
|
TestUtils.assert_equals(
|
|
0,
|
|
initial_level,
|
|
"Initial research level should be 0"
|
|
)
|
|
|
|
game_state.add_currency_by_id(&"gold", BigNumber.from_float(100000.0))
|
|
game_state.add_currency_by_id(&"gems", BigNumber.from_float(100.0))
|
|
|
|
await _wait()
|
|
|
|
for i in range(10):
|
|
game_state.add_research_xp(research_id, BigNumber.from_float(500.0))
|
|
await _wait(0.05)
|
|
|
|
var pre_prestige_xp: BigNumber = game_state.get_research_xp(research_id)
|
|
var pre_prestige_level: int = game_state.get_research_level(research_id)
|
|
print("[TARGET] pre_prestige_research_xp: mantissa=%s, exponent=%s" % [pre_prestige_xp.mantissa, pre_prestige_xp.exponent])
|
|
print("[TARGET] pre_prestige_research_level: %d" % pre_prestige_level)
|
|
|
|
TestUtils.assert_true(
|
|
pre_prestige_xp.mantissa > 0,
|
|
"Research XP should be > 0 before prestige"
|
|
)
|
|
|
|
TestUtils.assert_true(
|
|
pre_prestige_level > 0,
|
|
"Research level should be > 0 before prestige"
|
|
)
|
|
|
|
var can_prestige: bool = prestige_manager.can_prestige()
|
|
print("[TARGET] can_prestige: %s" % str(can_prestige))
|
|
|
|
TestUtils.assert_true(
|
|
can_prestige,
|
|
"Should be able to prestige after accumulating currencies"
|
|
)
|
|
|
|
if can_prestige:
|
|
prestige_manager.perform_prestige()
|
|
|
|
await _wait()
|
|
|
|
var post_prestige_xp: BigNumber = game_state.get_research_xp(research_id)
|
|
var post_prestige_level: int = game_state.get_research_level(research_id)
|
|
print("[TARGET] post_prestige_research_xp: mantissa=%s, exponent=%s" % [post_prestige_xp.mantissa, post_prestige_xp.exponent])
|
|
print("[TARGET] post_prestige_research_level: %d" % post_prestige_level)
|
|
|
|
TestUtils.assert_equals(
|
|
0,
|
|
post_prestige_xp.mantissa,
|
|
"Research XP should be reset to 0 after prestige"
|
|
)
|
|
|
|
TestUtils.assert_equals(
|
|
0,
|
|
post_prestige_level,
|
|
"Research level should be reset to 0 after prestige"
|
|
)
|
|
|
|
_print_summary()
|
|
_test_complete = true
|
|
if failed == 0:
|
|
quit(0)
|
|
else:
|
|
quit(1)
|
|
|
|
func _wait(seconds: float = 0.1) -> void:
|
|
await create_timer(seconds).timeout
|
|
|
|
func _print_summary():
|
|
TestUtils.print_result()
|
|
passed = TestUtils.get_passed()
|
|
failed = TestUtils.get_failed()
|
|
|
|
func get_passed() -> int:
|
|
return passed
|
|
|
|
func get_failed() -> int:
|
|
return failed
|