Example #1
0
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")
	}

}
Example #2
0
File: main.go Project: notnil/joker
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")
}
Example #3
0
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")
	}
}
Example #4
0
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)
	}
}