From 87d08f0151e643951769e323995f1c5ed89ee200 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Fri, 18 Sep 2026 01:50:17 -0400 Subject: fix: harden economy recovery, shutdown concurrency, world validation, and inventory-loss paths --- internal/game/economy_seq_test.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 internal/game/economy_seq_test.go (limited to 'internal/game/economy_seq_test.go') diff --git a/internal/game/economy_seq_test.go b/internal/game/economy_seq_test.go new file mode 100644 index 0000000..2c5bbdb --- /dev/null +++ b/internal/game/economy_seq_test.go @@ -0,0 +1,24 @@ +package game + +import "testing" + +// TestStakeCoveredRespectsCreationOrder: an open payout created BEFORE a stake +// must not be treated as that stake's settlement, or RefundOutstanding would +// resolve the later stake without returning its money. +func TestStakeCoveredRespectsCreationOrder(t *testing.T) { + j := newEconomyJournal(t.TempDir()) + stake := &economyRecord{ID: "stake", Player: "alice", Kind: "wager", Status: "open", Seq: 2} + j.registerStake(stake) + + older := &economyRecord{ID: "older", Player: "alice", Kind: "payout", Status: "open", Seq: 1, Tracked: true} + j.openPayoutRecs[stake.key()] = []*economyRecord{older} + if j.stakeCovered(stake) { + t.Fatal("a payout created before the stake must not cover it") + } + + newer := &economyRecord{ID: "newer", Player: "alice", Kind: "payout", Status: "open", Seq: 3, Tracked: true} + j.openPayoutRecs[stake.key()] = []*economyRecord{newer} + if !j.stakeCovered(stake) { + t.Fatal("a payout created after the stake should cover it") + } +} -- cgit v1.2.3