aboutsummaryrefslogtreecommitdiff
path: root/internal/game/roulette_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/roulette_test.go')
-rw-r--r--internal/game/roulette_test.go44
1 files changed, 43 insertions, 1 deletions
diff --git a/internal/game/roulette_test.go b/internal/game/roulette_test.go
index 7a22d9b..333e6a9 100644
--- a/internal/game/roulette_test.go
+++ b/internal/game/roulette_test.go
@@ -95,6 +95,45 @@ func TestRouletteCombinationTargetParsing(t *testing.T) {
}
}
+func TestRouletteRacetrackTargetParsing(t *testing.T) {
+ // A racetrack single-zero table accepts the call and neighbours syntaxes.
+ g := &Game{Casino: casino.NewManager(1)}
+ cfg := casino.TableConfig{ID: "roulette", Game: casino.GameRoulette, Roulette: casino.RouletteConfig{Racetrack: true}}
+ g.Casino.Join(1, cfg, "alice")
+ conn := &casinoTestConn{}
+ sess := &net.Session{Player: player.New("alice"), Conn: conn}
+ g.loggedInChars = map[string]*net.Session{"alice": sess}
+ valid := [][]string{
+ {"10", "on", "voisins"},
+ {"10", "on", "voisins", "du", "zero"},
+ {"10", "on", "tiers"},
+ {"10", "on", "orphelins"},
+ {"10", "on", "zero", "spiel"},
+ {"10", "on", "neighbors", "17"},
+ {"10", "on", "neighbors", "of", "17"},
+ }
+ for _, args := range valid {
+ conn.data = nil
+ g.executeBet(sess, args, "bet "+strings.Join(args, " "))
+ if !strings.Contains(string(conn.data), "You don't have enough chips and credits") {
+ t.Fatalf("args=%v: expected wallet failure, got %q", args, conn.data)
+ }
+ }
+ // The same names are unknown on a single-zero table without the option.
+ plain := &Game{Casino: casino.NewManager(1)}
+ plain.Casino.Join(1, casino.TableConfig{ID: "roulette", Game: casino.GameRoulette}, "bob")
+ conn2 := &casinoTestConn{}
+ sess2 := &net.Session{Player: player.New("bob"), Conn: conn2}
+ plain.loggedInChars = map[string]*net.Session{"bob": sess2}
+ for _, args := range [][]string{{"10", "on", "voisins"}, {"10", "on", "neighbors", "17"}} {
+ conn2.data = nil
+ plain.executeBet(sess2, args, "bet "+strings.Join(args, " "))
+ if !strings.Contains(string(conn2.data), "Unknown roulette target") {
+ t.Fatalf("non-racetrack args=%v: expected rejection, got %q", args, conn2.data)
+ }
+ }
+}
+
func TestCasinoTestPortalAuthoredContract(t *testing.T) {
g, rooms, _ := loadVesta(t)
found := false
@@ -118,7 +157,7 @@ func TestCasinoTestPortalAuthoredContract(t *testing.T) {
if steps[1].Teleport != 6100 || rooms[6100] == nil {
t.Fatal("wrong casino destination")
}
- for _, id := range []int{6182, 6183} {
+ for _, id := range []int{6182, 6183, 6184} {
cfg := rooms[id].CasinoTables[0]
if err := cfg.Validate(); err != nil {
t.Fatal(err)
@@ -126,5 +165,8 @@ func TestCasinoTestPortalAuthoredContract(t *testing.T) {
if cfg.Game != casino.GameRoulette || cfg.Roulette.DoubleZero != (id == 6183) {
t.Fatal("wrong roulette rules", id)
}
+ if cfg.Roulette.Racetrack != (id == 6184) {
+ t.Fatal("wrong racetrack setting", id)
+ }
}
}