func TestToAndFronJSON(t *testing.T) { t.Parallel() register() // create table opts := table.Config{ Game: table.Holdem, Stakes: table.Stakes{ SmallBet: 1, BigBet: 2, Ante: 0, }, NumOfSeats: 6, Limit: table.NoLimit, } p1 := Player("1", []PlayerAction{}) tbl := table.New(opts, hand.NewDealer()) if err := tbl.Sit(p1, 0, 100); err != nil { t.Fatal(err) } // marshal into json b, err := json.Marshal(tbl) if err != nil { t.Fatal(err) } // unmarshal from json tblCopy := &table.Table{} if err := json.Unmarshal(b, tblCopy); err != nil { t.Fatal(err) } // marshal back to view b, err = json.Marshal(tblCopy) if err != nil { t.Fatal(err) } if len(tblCopy.Players()) != 1 { t.Fatal("players didn't deserialize correctly") } }
func main() { p1 := playerFromInput("Player 1") p2 := playerFromInput("Player 2") opts := table.Config{ Game: table.Holdem, Limit: table.NoLimit, Stakes: table.Stakes{SmallBet: 1, BigBet: 2, Ante: 0}, NumOfSeats: 2, } tbl = table.New(opts, hand.NewDealer()) if err := tbl.Sit(p1, 0, 100); err != nil { panic(err) } if err := tbl.Sit(p2, 1, 100); err != nil { panic(err) } runTable(tbl) fmt.Println("DONE") }
func TestSeating(t *testing.T) { t.Parallel() opts := table.Config{ Game: table.Holdem, Stakes: table.Stakes{ SmallBet: 1, BigBet: 2, Ante: 0, }, NumOfSeats: 6, } p1 := Player("1", []PlayerAction{}) p1Dup := Player("1", []PlayerAction{}) p2 := Player("2", []PlayerAction{}) tbl := table.New(opts, hand.NewDealer()) // sit player 1 if err := tbl.Sit(p1, 0, 100); err != nil { t.Fatal(err) } // can't sit dup player 1 if err := tbl.Sit(p1Dup, 1, 100); err != table.ErrAlreadySeated { t.Fatal("should already be seated") } // can't sit player 2 in invalid seat if err := tbl.Sit(p2, 6, 100); err != table.ErrInvalidSeat { t.Fatal("can't sit in invalid seat") } // can't sit player 2 in occupied seat if err := tbl.Sit(p2, 0, 100); err != table.ErrSeatOccupied { t.Fatal("can't sit in occupied seat") } }
func TestRaises(t *testing.T) { t.Parallel() opts := table.Config{ Game: table.Holdem, Stakes: table.Stakes{ SmallBet: 1, BigBet: 2, Ante: 0, }, NumOfSeats: 6, } p1 := Player("1", []PlayerAction{}) p2 := Player("2", []PlayerAction{}) p3 := Player("3", []PlayerAction{}) p4 := Player("4", []PlayerAction{}) tbl := table.New(opts, hand.NewDealer()) if err := tbl.Sit(p1, 0, 50); err != nil { t.Fatal(err) } if err := tbl.Sit(p2, 1, 100); err != nil { t.Fatal(err) } if err := tbl.Sit(p3, 2, 52); err != nil { t.Fatal(err) } if err := tbl.Sit(p4, 3, 60); err != nil { t.Fatal(err) } // preflop p1.Call() p2.Call() p3.Call() p4.Check() // flop p3.Check() p4.Check() p1.Bet(48) p2.Call() p3.Raise(2) p4.Raise(8) for i := 0; i < 12; i++ { if _, _, err := tbl.Next(); err != nil { t.Fatal(err) } } if tbl.Action() != 1 { t.Fatal("action should be on player 2") } players := tbl.Players() if players[1].CanRaise() { t.Fatal("player 2 shouldn't be able to raise") } p2.Call() _, _, err := tbl.Next() _, _, err = tbl.Next() if err != nil { t.Fatal(err) } }