dkforest

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

commit ca7e615d18359cd7db0ff57a4f88bee49fd355e4
parent f0741ca54d31534b2353e054f5b2f3abeb072c40
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Thu,  7 Dec 2023 21:55:16 -0500

fix "allSettled"

Diffstat:
Mpkg/web/handlers/poker/poker.go | 30+++++++++++++++---------------
Mpkg/web/handlers/poker/poker_test.go | 21+++++++++++++++++++++
2 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -226,26 +226,26 @@ func (g *Ongoing) GetPlayer(player string) *PokerPlayer { } func isRoundSettled(players []*PokerPlayer) bool { - allSettled := true - b := -1 + type Tmp struct { + Bet int + AllIn bool + Folded bool + } + arr := make([]Tmp, 0) for _, p := range players { - if p.Folded { - continue - } - if p.Cash == 0 { // all in - if b == -1 { - b = p.Bet - } + arr = append(arr, Tmp{Bet: p.Bet, AllIn: p.Cash == 0, Folded: p.Folded}) + } + sort.Slice(arr, func(i, j int) bool { return arr[i].Bet > arr[j].Bet }) + b := arr[0].Bet + for _, el := range arr { + if el.Folded || el.AllIn { continue } - if b == -1 { - b = p.Bet - } else if p.Bet != b { - allSettled = false - break + if el.Bet != b { + return false } } - return allSettled + return true } func (g *PokerGame) incrDealerIdx() { diff --git a/pkg/web/handlers/poker/poker_test.go b/pkg/web/handlers/poker/poker_test.go @@ -90,3 +90,24 @@ func Test_processPot(t *testing.T) { assert.Equal(t, "p2", res[0].Player.Username) assert.Equal(t, 1000, res[0].Gain) } + +func Test_isRoundSettled(t *testing.T) { + type args struct { + players []*PokerPlayer + } + tests := []struct { + name string + args args + want bool + }{ + {"1", args{players: []*PokerPlayer{{Bet: 10, Cash: 0}, {Bet: 20, Cash: 0}, {Bet: 30, Cash: 1}, {Bet: 30, Cash: 1}}}, true}, + {"2", args{players: []*PokerPlayer{{Bet: 100, Cash: 0}, {Bet: 20, Cash: 0}, {Bet: 30, Cash: 1}, {Bet: 30, Cash: 1}}}, false}, + {"3", args{players: []*PokerPlayer{{Bet: 10, Cash: 0}, {Bet: 200, Cash: 0}, {Bet: 30, Cash: 1}, {Bet: 30, Cash: 1}}}, false}, + // TODO: Add test cases. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equalf(t, tt.want, isRoundSettled(tt.args.players), "isRoundSettled(%v)", tt.args.players) + }) + } +}