commit 895ae566fabd3439fc20dc19846bec4b72477a8b
parent ad1476a94ba1b98bf84722db725e9757666b0b58
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Thu, 7 Dec 2023 18:58:13 -0500
fixes
Diffstat:
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go
@@ -764,6 +764,9 @@ func processPot(winners []GameResult, nbPlayers, mainPot int) (winnersStr, winne
} else {
isDone := true
for _, group := range winners {
+ if mainPot == 0 {
+ break
+ }
isDone = true
if len(group.Players) == 1 && group.Players[0].Cash > 0 {
// Only 1 player win and is not all-in
@@ -775,8 +778,9 @@ func processPot(winners []GameResult, nbPlayers, mainPot int) (winnersStr, winne
// Only 1 player win but is all-in
player := group.Players[0]
maxGain := player.RoundTotalBet * nbPlayers
- res = append(res, PlayerGain{player, maxGain})
- mainPot -= maxGain
+ piece := utils.MinInt(maxGain, mainPot)
+ res = append(res, PlayerGain{player, piece})
+ mainPot -= piece
isDone = false
} else if len(group.Players) > 1 {
// Multiple winners, split pot
diff --git a/pkg/web/handlers/poker/poker_test.go b/pkg/web/handlers/poker/poker_test.go
@@ -46,15 +46,19 @@ func Test_sortGameResults(t *testing.T) {
}
func Test_processPot(t *testing.T) {
- p1 := &PokerPlayer{Cash: 0, RoundTotalBet: 100, Username: "p1"}
- p2 := &PokerPlayer{Cash: 0, RoundTotalBet: 200, Username: "p2"}
- p3 := &PokerPlayer{Cash: 0, RoundTotalBet: 300, Username: "p3"}
- p4 := &PokerPlayer{Cash: 1, RoundTotalBet: 400, Username: "p4"}
- arr := []GameResult{
+ var p1, p2, p3, p4 *PokerPlayer
+ var arr []GameResult
+ var res []PlayerGain
+
+ p1 = &PokerPlayer{Cash: 0, RoundTotalBet: 100, Username: "p1"}
+ p2 = &PokerPlayer{Cash: 0, RoundTotalBet: 200, Username: "p2"}
+ p3 = &PokerPlayer{Cash: 0, RoundTotalBet: 300, Username: "p3"}
+ p4 = &PokerPlayer{Cash: 1, RoundTotalBet: 400, Username: "p4"}
+ arr = []GameResult{
{1, []*PokerPlayer{p2, p4, p1, p3}},
}
sortGameResults(arr)
- _, _, res := processPot(arr, 4, 1000)
+ _, _, res = processPot(arr, 4, 1000)
assert.Equal(t, 250, res[0].Gain)
assert.Equal(t, 250, res[1].Gain)
assert.Equal(t, 250, res[2].Gain)
@@ -73,4 +77,16 @@ func Test_processPot(t *testing.T) {
assert.Equal(t, 80, res[1].Gain)
assert.Equal(t, 440, res[2].Gain)
assert.Equal(t, 440, res[3].Gain)
+
+ p1 = &PokerPlayer{Cash: 1, RoundTotalBet: 500, Username: "p1"}
+ p2 = &PokerPlayer{Cash: 0, RoundTotalBet: 500, Username: "p2"}
+ arr = []GameResult{
+ {1, []*PokerPlayer{p2}},
+ {2, []*PokerPlayer{p1}},
+ }
+ sortGameResults(arr)
+ _, _, res = processPot(arr, 3, 1000)
+ assert.Equal(t, 1, len(res))
+ assert.Equal(t, "p2", res[0].Player.Username)
+ assert.Equal(t, 1000, res[0].Gain)
}