commit b606f058cd846eb9c90128bf8119b2c10de44d55
parent bf5879f9b098a4a421ccc64faf465ce49a834a36
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Mon, 18 Dec 2023 20:09:59 -0500
fix unit tests
Diffstat:
1 file changed, 46 insertions(+), 41 deletions(-)
diff --git a/pkg/web/handlers/poker/poker_test.go b/pkg/web/handlers/poker/poker_test.go
@@ -2,23 +2,28 @@ package poker
import (
"dkforest/pkg/database"
+ "dkforest/pkg/utils"
"github.com/stretchr/testify/assert"
"testing"
)
+func n(v uint64) utils.RWMtx[database.PokerChip] {
+ return utils.NewRWMtx[database.PokerChip](database.PokerChip(v))
+}
+
func Test_sortGameResults(t *testing.T) {
- p1 := &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p1"}, GameBet: 10}
- p2 := &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p2"}, GameBet: 20}
- p3 := &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p3"}, GameBet: 30}
- p4 := &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 1, Username: "p4"}, GameBet: 100}
+ p1 := &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p1"}, GameBet: 10}
+ p2 := &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p2"}, GameBet: 20}
+ p3 := &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p3"}, GameBet: 30}
+ p4 := &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(1), Username: "p4"}, GameBet: 100}
arr := []GameResult{
{1, []*PokerPlayer{p2, p4, p1, p3}},
}
sortGameResults(arr)
- assert.Equal(t, "p1", arr[0].Players[0].Username)
- assert.Equal(t, "p2", arr[0].Players[1].Username)
- assert.Equal(t, "p3", arr[0].Players[2].Username)
- assert.Equal(t, "p4", arr[0].Players[3].Username)
+ assert.Equal(t, database.Username("p1"), arr[0].Players[0].Username)
+ assert.Equal(t, database.Username("p2"), arr[0].Players[1].Username)
+ assert.Equal(t, database.Username("p3"), arr[0].Players[2].Username)
+ assert.Equal(t, database.Username("p4"), arr[0].Players[3].Username)
}
func Test_processPot(t *testing.T) {
@@ -26,70 +31,70 @@ func Test_processPot(t *testing.T) {
var arr []GameResult
var res []PlayerGain
- p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p1"}, GameBet: 100, AllInMaxGain: 400}
- p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p2"}, GameBet: 200, AllInMaxGain: 700}
- p3 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p3"}, GameBet: 300, AllInMaxGain: 900}
- p4 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 1, Username: "p4"}, GameBet: 400}
+ p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p1"}, GameBet: 100, AllInMaxGain: 400}
+ p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p2"}, GameBet: 200, AllInMaxGain: 700}
+ p3 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p3"}, GameBet: 300, AllInMaxGain: 900}
+ p4 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(1), Username: "p4"}, GameBet: 400}
arr = []GameResult{
{1, []*PokerPlayer{p2, p4, p1, p3}},
}
sortGameResults(arr)
- res, _ = processPot(arr, 1000, 20, false)
+ res, _ = processPot(arr, 1000, 20, false, 4)
assert.Equal(t, database.PokerChip(250), res[0].Gain)
assert.Equal(t, database.PokerChip(250), res[1].Gain)
assert.Equal(t, database.PokerChip(250), res[2].Gain)
assert.Equal(t, database.PokerChip(250), res[3].Gain)
- p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p1"}, GameBet: 10, AllInMaxGain: 40}
- p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p2"}, GameBet: 20, AllInMaxGain: 70}
- p3 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p3"}, GameBet: 300, AllInMaxGain: 630}
- p4 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 1, Username: "p4"}, GameBet: 400}
+ p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p1"}, GameBet: 10, AllInMaxGain: 40}
+ p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p2"}, GameBet: 20, AllInMaxGain: 70}
+ p3 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p3"}, GameBet: 300, AllInMaxGain: 630}
+ p4 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(1), Username: "p4"}, GameBet: 400}
arr = []GameResult{
{1, []*PokerPlayer{p2, p4, p1, p3}},
}
sortGameResults(arr)
- res, _ = processPot(arr, 1000, 20, false)
+ res, _ = processPot(arr, 1000, 20, false, 4)
assert.Equal(t, database.PokerChip(40), res[0].Gain)
assert.Equal(t, database.PokerChip(70), res[1].Gain)
assert.Equal(t, database.PokerChip(445), res[2].Gain)
assert.Equal(t, database.PokerChip(445), res[3].Gain)
- p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 1, Username: "p1"}, GameBet: 500}
- p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p2"}, GameBet: 500, AllInMaxGain: 1000}
+ p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(1), Username: "p1"}, GameBet: 500}
+ p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p2"}, GameBet: 500, AllInMaxGain: 1000}
arr = []GameResult{
{1, []*PokerPlayer{p2}},
{2, []*PokerPlayer{p1}},
}
sortGameResults(arr)
- res, _ = processPot(arr, 1000, 20, false)
+ res, _ = processPot(arr, 1000, 20, false, 2)
assert.Equal(t, 1, len(res))
assert.Equal(t, database.Username("p2"), res[0].Player.Username)
assert.Equal(t, database.PokerChip(1000), res[0].Gain)
- p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 1, Username: "p1"}, GameBet: 5}
- p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 1, Username: "p2"}, GameBet: 5}
- p3 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 1, Username: "p3"}, GameBet: 5}
- p4 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 1, Username: "p4"}, GameBet: 5}
+ p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(1), Username: "p1"}, GameBet: 5}
+ p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(1), Username: "p2"}, GameBet: 5}
+ p3 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(1), Username: "p3"}, GameBet: 5}
+ p4 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(1), Username: "p4"}, GameBet: 5}
//p5 = &PokerPlayer{Cash: 1, GameBet: 3, Folded: true, Username: "p5"}
arr = []GameResult{
{1, []*PokerPlayer{p1, p2, p3}},
{2, []*PokerPlayer{p4}},
}
sortGameResults(arr)
- res, _ = processPot(arr, 23, 20, false)
+ res, _ = processPot(arr, 23, 20, false, 4)
assert.Equal(t, 3, len(res))
assert.Equal(t, database.PokerChip(8), res[0].Gain)
assert.Equal(t, database.PokerChip(8), res[1].Gain)
assert.Equal(t, database.PokerChip(7), res[2].Gain)
- p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p1"}, GameBet: 900, AllInMaxGain: 1560}
- p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: 0, Username: "p2"}, GameBet: 640, AllInMaxGain: 1300}
+ p1 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p1"}, GameBet: 900, AllInMaxGain: 1560}
+ p2 = &PokerPlayer{SeatedPlayer: &SeatedPlayer{Cash: n(0), Username: "p2"}, GameBet: 640, AllInMaxGain: 1300}
arr = []GameResult{
{1, []*PokerPlayer{p2}},
{2, []*PokerPlayer{p1}},
}
sortGameResults(arr)
- res, _ = processPot(arr, 1560, 20, false)
+ res, _ = processPot(arr, 1560, 20, false, 2)
assert.Equal(t, 2, len(res))
assert.Equal(t, database.PokerChip(1300), res[0].Gain)
assert.Equal(t, database.PokerChip(260), res[1].Gain)
@@ -105,20 +110,20 @@ func Test_isRoundSettled(t *testing.T) {
want bool
}{
{"1", args{players: []*PokerPlayer{
- {Bet: 10, SeatedPlayer: &SeatedPlayer{Cash: 0}},
- {Bet: 20, SeatedPlayer: &SeatedPlayer{Cash: 0}},
- {Bet: 30, SeatedPlayer: &SeatedPlayer{Cash: 1}},
- {Bet: 30, SeatedPlayer: &SeatedPlayer{Cash: 1}}}}, true},
+ {Bet: n(10), SeatedPlayer: &SeatedPlayer{Cash: n(0)}},
+ {Bet: n(20), SeatedPlayer: &SeatedPlayer{Cash: n(0)}},
+ {Bet: n(30), SeatedPlayer: &SeatedPlayer{Cash: n(1)}},
+ {Bet: n(30), SeatedPlayer: &SeatedPlayer{Cash: n(1)}}}}, true},
{"2", args{players: []*PokerPlayer{
- {Bet: 100, SeatedPlayer: &SeatedPlayer{Cash: 0}},
- {Bet: 20, SeatedPlayer: &SeatedPlayer{Cash: 0}},
- {Bet: 30, SeatedPlayer: &SeatedPlayer{Cash: 1}},
- {Bet: 30, SeatedPlayer: &SeatedPlayer{Cash: 1}}}}, false},
+ {Bet: n(100), SeatedPlayer: &SeatedPlayer{Cash: n(0)}},
+ {Bet: n(20), SeatedPlayer: &SeatedPlayer{Cash: n(0)}},
+ {Bet: n(30), SeatedPlayer: &SeatedPlayer{Cash: n(1)}},
+ {Bet: n(30), SeatedPlayer: &SeatedPlayer{Cash: n(1)}}}}, false},
{"3", args{players: []*PokerPlayer{
- {Bet: 10, SeatedPlayer: &SeatedPlayer{Cash: 0}},
- {Bet: 200, SeatedPlayer: &SeatedPlayer{Cash: 0}},
- {Bet: 30, SeatedPlayer: &SeatedPlayer{Cash: 1}},
- {Bet: 30, SeatedPlayer: &SeatedPlayer{Cash: 1}}}}, false},
+ {Bet: n(10), SeatedPlayer: &SeatedPlayer{Cash: n(0)}},
+ {Bet: n(200), SeatedPlayer: &SeatedPlayer{Cash: n(0)}},
+ {Bet: n(30), SeatedPlayer: &SeatedPlayer{Cash: n(1)}},
+ {Bet: n(30), SeatedPlayer: &SeatedPlayer{Cash: n(1)}}}}, false},
// TODO: Add test cases.
}
for _, tt := range tests {