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.
57 lines
3.7 KiB
GDScript
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)
|