commit ca7e615d18359cd7db0ff57a4f88bee49fd355e4
parent f0741ca54d31534b2353e054f5b2f3abeb072c40
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Thu, 7 Dec 2023 21:55:16 -0500
fix "allSettled"
Diffstat:
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)
+ })
+ }
+}