Fix hangman: lowercase r swallowed by restart binding during play

The Update key switch bound "r" to restart, but returned early even when
the game was still active, so lowercase r could never be entered as a
letter guess (Shift+R worked because "R" didn't match the case). Now r
only restarts when dead; otherwise it falls through to the guess logic.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Anthony Ettinger 2026-07-05 13:16:05 +00:00
parent d19c5c4c3e
commit 55ddbbc4de
2 changed files with 14 additions and 1 deletions

View file

@ -68,6 +68,18 @@ func TestHangmanDeathAfterSixMisses(t *testing.T) {
}
}
// The "r" restart binding must not swallow r as a letter guess during play.
func TestHangmanLowercaseRIsAGuess(t *testing.T) {
h := newTestHangman("ROUTER")
for _, r := range "router" {
m, _ := h.Update(key(r))
h = m.(*hangman)
}
if !h.won {
t.Fatalf("lowercase r should count as a guess and solve ROUTER")
}
}
func TestHangmanLowercaseInputAndAdvance(t *testing.T) {
h := newTestHangman("CAT")
for _, r := range "cat" { // lowercase should still solve