clone

fifteen puzzle games for the terminal, with daily puzzles, weekly ladders and xp, built on bubble tea

feat/app-decomposition
puzzletea / gameentry / gameentry_test.go
gameentry_test.go 1.8K
1package gameentry23import (4 "errors"5 "math/rand/v2"6 "testing"78 "github.com/FelineStateMachine/puzzletea/game"9 "github.com/FelineStateMachine/puzzletea/puzzle"10)1112type stubMode struct {13 game.BaseMode14}1516func (m stubMode) Spawn() (game.Gamer, error) {17 return nil, errors.New("not implemented")18}1920type seededStubMode struct {21 stubMode22}2324func (m seededStubMode) SpawnSeeded(rng *rand.Rand) (game.Gamer, error) {25 return nil, errors.New("not implemented")26}2728func TestBuildModeDefsMarksSeededModes(t *testing.T) {29 modes := []game.Mode{30 stubMode{BaseMode: game.NewBaseMode("Beginner", "Easy board")},31 seededStubMode{stubMode{BaseMode: game.NewBaseMode("Expert", "Hard board")}},32 }3334 defs := BuildModeDefs(modes)35 if len(defs) != 2 {36 t.Fatalf("len(BuildModeDefs) = %d, want 2", len(defs))37 }38 if defs[0].Seeded {39 t.Fatal("defs[0].Seeded = true, want false")40 }41 if !defs[1].Seeded {42 t.Fatal("defs[1].Seeded = false, want true")43 }44}4546func TestNewEntryKeepsMetadataAndRuntimeModesAligned(t *testing.T) {47 modes := []game.Mode{48 seededStubMode{stubMode{BaseMode: game.NewBaseMode("Medium", "Balanced board")}},49 }50 definition := puzzle.NewDefinition(puzzle.DefinitionSpec{51 Name: "Sudoku",52 Modes: BuildModeDefs(modes),53 DailyModeIDs: []puzzle.ModeID{"medium"},54 })5556 entry := NewEntry(EntrySpec{57 Definition: definition,58 Help: "Rules",59 Import: func([]byte) (game.Gamer, error) { return nil, nil },60 Modes: modes,61 })6263 if got, want := entry.Definition.Name, "Sudoku"; got != want {64 t.Fatalf("Definition.Name = %q, want %q", got, want)65 }66 if got, want := len(entry.Modes), 1; got != want {67 t.Fatalf("len(Modes) = %d, want %d", got, want)68 }69 if entry.Modes[0].Seeded == nil {70 t.Fatal("Modes[0].Seeded = nil, want seeded spawner")71 }72 if entry.Print != nil {73 t.Fatal("Print = non-nil, want nil")74 }75}