dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 895ae566fabd3439fc20dc19846bec4b72477a8b
parent ad1476a94ba1b98bf84722db725e9757666b0b58
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu,  7 Dec 2023 18:58:13 -0500

fixes

Diffstat:
Mpkg/web/handlers/poker/poker.go | 8++++++--
Mpkg/web/handlers/poker/poker_test.go | 28++++++++++++++++++++++------
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) }