aboutsummaryrefslogtreecommitdiff
path: root/internal/casino/correct_casino_room_validate_test.go
blob: 319a6b627caf0960d2f6de1c50b79459f57913b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package casino

import "testing"

// Removing the shoe-coverage configuration floor must not disturb legitimate
// rooms: a room whose geometry validated before still validates, and one the
// over-strict floor previously rejected (but that plays fine) now validates
// too — so the room is neither darkened nor blocked from the admin editor.

func TestRoomWithShippedGeometryStillValidates(t *testing.T) {
	// The shipped intro room (data/rooms/intro/2001.yaml): blackjack,
	// baccarat, and a slots machine in one room.
	tables := []TableConfig{
		{ID: "blackjack", Game: GameBlackjack, MaxPlayers: 6, BettingTicks: 20,
			MinBet: 1, MaxBet: 1000,
			Blackjack: BlackjackConfig{Decks: 8, ShuffleAt: 0.25, BlackjackPayout: 1.5}},
		{ID: "baccarat", Game: GameBaccarat, MaxPlayers: 6, BettingTicks: 20,
			MinBet: 1, MaxBet: 1000,
			Baccarat: BaccaratConfig{Decks: 8, ShuffleAt: 0.25}},
	}
	machines := []MachineConfig{{
		ID: "huff_puff_01", Game: GameSlots, Variant: "huff_and_even_more_puff",
		MinBet: 1, MaxBet: 1000, Payout: 0.97,
	}}
	if err := ValidateRoomConfigs(tables, machines); err != nil {
		t.Fatalf("the shipped casino room geometry no longer validates: %v", err)
	}

	// A six-deck eight-player blackjack table that the old 11*(1+P*S) floor
	// rejected (needs 363 cards, holds 312) now validates.
	small := []TableConfig{{ID: "blackjack", Game: GameBlackjack, MaxPlayers: 8,
		Blackjack: BlackjackConfig{Decks: 6}}}
	if err := ValidateRoomConfigs(small, nil); err != nil {
		t.Fatalf("a previously-rejected but playable room still fails validation: %v", err)
	}
}