clone

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

shikaku escpae behavior

Dami committed 51ba889
commit
51ba889c080dbea07cf5d909c921312bc1301f60
parent
3c438191f90bc3a5c8901e9e2c5dddf7bdd9b248
author
Dami <dami.etoile@gmail.com>
4 files changed, +136 -2
Mapp/update.go4+-
Aapp/update_test.go76++++++++++++++++++++++++++++++
Mshikaku/Model.go11++++-
Mshikaku/shikaku_test.go47+++++++++++++++++++
M app/update.go +3 -1
A app/update_test.go +76 -0
@@ -0,0 +1,76 @@
1+package app2+3+import (4+ "testing"5+6+ "charm.land/bubbles/v2/key"7+ tea "charm.land/bubbletea/v2"8+ "github.com/FelineStateMachine/puzzletea/game"9+)10+11+type escapeTrackingGame struct {12+ updateCalls int13+ sawEscape bool14+}15+16+func (g *escapeTrackingGame) GetDebugInfo() string {17+ return ""18+}19+20+func (g *escapeTrackingGame) GetFullHelp() [][]key.Binding {21+ return nil22+}23+24+func (g *escapeTrackingGame) GetSave() ([]byte, error) {25+ return nil, nil26+}27+28+func (g *escapeTrackingGame) IsSolved() bool {29+ return false30+}31+32+func (g *escapeTrackingGame) Reset() game.Gamer {33+ return g34+}35+36+func (g *escapeTrackingGame) SetTitle(string) game.Gamer {37+ return g38+}39+40+func (g *escapeTrackingGame) Init() tea.Cmd {41+ return nil42+}43+44+func (g *escapeTrackingGame) View() string {45+ return ""46+}47+48+func (g *escapeTrackingGame) Update(msg tea.Msg) (game.Gamer, tea.Cmd) {49+ g.updateCalls++50+ keyMsg, ok := msg.(tea.KeyPressMsg)51+ if ok && keyMsg.Code == tea.KeyEscape {52+ g.sawEscape = true53+ }54+ return g, nil55+}56+57+func TestGameViewEscapePassesThroughToGame(t *testing.T) {58+ tracker := &escapeTrackingGame{}59+ m := model{60+ state: gameView,61+ game: tracker,62+ }63+64+ next, _ := m.Update(tea.KeyPressMsg{Code: tea.KeyEscape})65+ got := next.(model)66+67+ if got.state != gameView {68+ t.Fatalf("expected to remain in gameView, got %d", got.state)69+ }70+ if tracker.updateCalls != 1 {71+ t.Fatalf("expected game Update to be called once, got %d", tracker.updateCalls)72+ }73+ if !tracker.sawEscape {74+ t.Fatal("expected game to receive escape key")75+ }76+}
M shikaku/Model.go +10 -1
M shikaku/shikaku_test.go +47 -0