Files
TheTree_mock/tests/s2/test_mana_reserve_balance.gd
Takeshi 5dde0c5ec2 Record original-alignment implementation and traceability checkpoint
Capture current source, content data, tests, asset licenses, and original-specification traceability. Original implementation remains incomplete. The accepted matching UI generation passed 154 suites and 12,253 checks, with eight rendered staff-contract screens reviewed. Latest native Windows and full-original acceptance remain outstanding.
2026-09-30 23:52:24 +09:00

57 lines
3.7 KiB
GDScript

extends SceneTree
const Reserve = preload("res://scripts/mana/mana_reserve_balance.gd")
var checks := 0
var failures := 0
func expect(ok: bool, message: String) -> void:
checks += 1
if not ok:
failures += 1
push_error(message)
func _initialize() -> void:
var reserve = Reserve.new()
expect(not reserve.advance_to(1, 0, 0)[&"ok"], "uninitialized updates rejected")
expect(not reserve.initialize(3, 2, 0)[&"ok"], "invalid initial capacity rejected")
expect(reserve.initialize(7, 10, 360)[&"ok"], "caller supplies all initial values")
var flow: Dictionary = reserve.advance_to(370, 5, 8)[&"flow"]
expect(flow[&"consumed"] == 8 and flow[&"after"] == 4 and flow[&"shortage"] == 0, "generation funds demand before reserve changes")
var saved: Dictionary = reserve.create_snapshot()
expect(reserve.advance_to(370, 5, 8)[&"replayed"] and reserve.create_snapshot() == saved, "same boundary cannot consume twice")
expect(not reserve.advance_to(370, 5, 9)[&"ok"] and reserve.create_snapshot() == saved, "conflicting boundary replay rejected atomically")
flow = reserve.advance_to(380, 0, 6)[&"flow"]
expect(flow[&"consumed"] == 4 and flow[&"shortage"] == 2 and reserve.is_depleted(), "short supply depletes exactly without negative reserve")
var depleted: Dictionary = reserve.create_snapshot()
var resumed = Reserve.new()
expect(resumed.restore_snapshot(depleted) and resumed.is_depleted(), "depletion survives save restore")
flow = resumed.advance_to(390, 3, 0)[&"flow"]
expect(flow[&"after"] == 3 and not resumed.is_depleted(), "supply replenishes stopped reserve")
flow = resumed.advance_to(400, 10, 0)[&"flow"]
expect(flow[&"after"] == 10 and flow[&"overflow"] == 3, "overflow explicitly accounts for capacity cap")
flow = resumed.advance_to(410, 9, 12)[&"flow"]
expect(flow[&"after"] == 7 and flow[&"overflow"] == 0 and flow[&"consumed"] == 12, "full storage does not discard supply needed by same-interval demand")
for bad: Variant in [-1, 1.5, "3", true, Reserve.LIMIT + 1]:
saved = resumed.create_snapshot()
expect(not resumed.advance_to(420, bad, 1)[&"ok"] and resumed.create_snapshot() == saved, "invalid supply rejected without state change: %s" % bad)
var canonical: Dictionary = resumed.create_snapshot()
for field: String in ["amount", "capacity", "minute", "version"]:
var corrupt := canonical.duplicate(true)
corrupt[field] = -1
expect(not resumed.restore_snapshot(corrupt) and resumed.create_snapshot() == canonical, "corrupt %s rejected atomically" % field)
for field: String in ["consumed", "shortage", "overflow", "after", "before", "to_minute"]:
var corrupt := canonical.duplicate(true)
corrupt[&"last_flow"][field] += 1
expect(not resumed.restore_snapshot(corrupt) and resumed.create_snapshot() == canonical, "flow conservation tampering rejected: " + field)
var extra := canonical.duplicate(true)
extra[&"unknown"] = 1
expect(not resumed.restore_snapshot(extra), "unknown schema field rejected")
var restored = Reserve.new()
expect(restored.restore_snapshot(canonical), "valid checkpoint restores")
expect(restored.advance_to(420, 2, 9) == resumed.advance_to(420, 2, 9), "restored next boundary reproduces same flow")
expect(restored.create_snapshot() == resumed.create_snapshot() and restored.is_depleted(), "exact zero depletion and replay state agree")
var limit = Reserve.new()
expect(limit.initialize(Reserve.LIMIT, Reserve.LIMIT, 0)[&"ok"], "upper bound initialization")
flow = limit.advance_to(1, Reserve.LIMIT, 0)[&"flow"]
expect(flow[&"overflow"] == Reserve.LIMIT and limit.get_amount() == Reserve.LIMIT, "large values conserve without wrap")
expect(restored.restore_snapshot(limit.create_snapshot()), "large flow snapshot accepted")
print("%s: %d checks" % ["PASS" if failures == 0 else "FAIL", checks])
quit(failures)