76 lines
2.0 KiB
GDScript
76 lines
2.0 KiB
GDScript
extends Node
|
|
|
|
var passed: int = 0
|
|
var failed: int = 0
|
|
var _game_root: Node = null
|
|
|
|
func _ready():
|
|
await run()
|
|
# Don't quit here - let test_runner handle it
|
|
|
|
func run():
|
|
print("\n=== TEST: Gold Mine Click ===\n")
|
|
TestUtils.set_test_name("gold_mine_click")
|
|
|
|
# Load tiny_sword scene
|
|
var scene = load("res://docs/gyms/tiny_sword/tiny_sword.tscn")
|
|
_game_root = scene.instantiate()
|
|
add_child(_game_root)
|
|
|
|
await _wait()
|
|
|
|
var game_state: LevelGameState = _game_root.find_child("LevelGameState")
|
|
var gold_mine = _game_root.find_child("GoldMine") as CurrencyGenerator
|
|
|
|
if game_state == null:
|
|
print("[ERROR] LevelGameState not found")
|
|
_print_summary()
|
|
return
|
|
|
|
if gold_mine == null:
|
|
print("[ERROR] GoldMine node not found")
|
|
_print_summary()
|
|
return
|
|
|
|
# Record initial gold
|
|
var initial_gold: BigNumber = game_state.get_currency_amount_by_id(&"gold")
|
|
print("[TARGET] initial_gold: %s" % initial_gold.to_string_suffix(2))
|
|
|
|
# Simulate clicking the generator
|
|
gold_mine._on_pressed()
|
|
|
|
await _wait()
|
|
|
|
# Validate gold increased
|
|
var final_gold: BigNumber = game_state.get_currency_amount_by_id(&"gold")
|
|
print("[TARGET] final_gold: %s" % final_gold.to_string_suffix(2))
|
|
|
|
TestUtils.assert_greater_than(
|
|
final_gold.mantissa,
|
|
initial_gold.mantissa,
|
|
"Gold increased after generator click"
|
|
)
|
|
|
|
# Check specific value (adjust based on click_mantissa in data)
|
|
var expected_min: float = initial_gold.mantissa + 1.0
|
|
TestUtils.assert_true(
|
|
final_gold.mantissa >= expected_min,
|
|
"Gold increased by at least 1.0"
|
|
)
|
|
|
|
_print_summary()
|
|
|
|
func _wait() -> void:
|
|
await get_tree().create_timer(0.5).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
|