Preserve approved pixel tower prototype as development baseline
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
extends SceneTree
|
||||
|
||||
var _failures := 0
|
||||
var _checks := 0
|
||||
|
||||
func _initialize() -> void:
|
||||
call_deferred("_run")
|
||||
|
||||
func _run() -> void:
|
||||
print("The Tree: automated checks")
|
||||
_test_game_clock()
|
||||
_test_game_state()
|
||||
_test_facility_data()
|
||||
load("res://tests/s0/test_kernel_and_save.gd").run(Callable(self, "_expect"))
|
||||
if _failures == 0:
|
||||
print("PASS: %d checks" % _checks)
|
||||
else:
|
||||
push_error("FAIL: %d of %d checks failed" % [_failures, _checks])
|
||||
quit(_failures)
|
||||
|
||||
func _test_game_clock() -> void:
|
||||
var clock = load("res://autoload/game_clock.gd").new()
|
||||
clock.reset(1, 6, 0)
|
||||
_expect(clock.get_phase() == clock.Phase.MORNING, "06:00 is morning")
|
||||
clock.advance_minutes(4 * 60)
|
||||
_expect(clock.get_hour() == 10, "clock advances to 10:00")
|
||||
_expect(clock.get_phase() == clock.Phase.DAY, "10:00 is day phase")
|
||||
clock.set_speed(4)
|
||||
_expect(clock.speed == 4, "clock accepts the specified x4 speed")
|
||||
clock.set_speed(3)
|
||||
_expect(clock.speed == 4, "clock rejects unsupported speed values")
|
||||
clock.advance_minutes(14 * 60)
|
||||
_expect(clock.day == 2 and clock.get_hour() == 0, "midnight starts the next day")
|
||||
clock.free()
|
||||
|
||||
func _test_game_state() -> void:
|
||||
var state = load("res://autoload/game_state.gd").new()
|
||||
state.reset()
|
||||
_expect(state.can_afford({&"gold": 500, &"materials": 5}), "default resources can afford starter room")
|
||||
_expect(state.spend({&"gold": 500, &"materials": 5}), "spending succeeds")
|
||||
_expect(state.get_resource(&"gold") == 4500, "gold is deducted atomically")
|
||||
_expect(not state.spend({&"mana": 1000}), "overspending is rejected")
|
||||
state.free()
|
||||
|
||||
func _test_facility_data() -> void:
|
||||
var catalog_script = load("res://scripts/data/facility_catalog.gd")
|
||||
var facilities: Array = catalog_script.load_all()
|
||||
_expect(facilities.size() == 16, "MVP facility catalog loads all baseline definitions")
|
||||
var seen_ids := {}
|
||||
for facility in facilities:
|
||||
_expect(facility.is_valid(), "%s has valid data" % facility.resource_path)
|
||||
_expect(not seen_ids.has(facility.id), "%s has a unique id" % facility.id)
|
||||
seen_ids[facility.id] = true
|
||||
|
||||
func _expect(condition: bool, label: String) -> void:
|
||||
_checks += 1
|
||||
if condition:
|
||||
print(" ✓ %s" % label)
|
||||
return
|
||||
_failures += 1
|
||||
push_error(" ✗ %s" % label)
|
||||
Reference in New Issue
Block a user