diff options
| author | historia <[not public]> | 2026-09-18 01:50:17 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-09-18 01:50:17 -0400 |
| commit | 87d08f0151e643951769e323995f1c5ed89ee200 (patch) | |
| tree | dc42a0b30ebb5a00dd7ba505cc4eaa44f4f308bc /internal/game/economy_seq_test.go | |
| parent | 32a3c59cebf2a16277e54d715a67adfdbe00b456 (diff) | |
| download | thehouseoficarus-87d08f0151e643951769e323995f1c5ed89ee200.tar.gz | |
fix: harden economy recovery, shutdown concurrency, world validation, and inventory-loss paths
Diffstat (limited to 'internal/game/economy_seq_test.go')
| -rw-r--r-- | internal/game/economy_seq_test.go | 24 |
1 files changed, 24 insertions, 0 deletions
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") + } +} |
