aboutsummaryrefslogtreecommitdiff
path: root/internal/game/economy_seq_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/economy_seq_test.go')
-rw-r--r--internal/game/economy_seq_test.go24
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")
+ }
+}