Files

48 lines
1.5 KiB
Go

// Copyright (c) 2026 Storm Dragon
// SPDX-License-Identifier: GPL-3.0-or-later
package interaction
import "testing"
func TestHiddenControlsRetainDraftAndRemainOutsideBothTabOrders(t *testing.T) {
session, err := New_session(test_form())
if err != nil {
t.Fatal(err)
}
session.Set_hidden("speech", "range", true)
for _, want := range []string{"enabled", "text", "ok", "cancel", ""} {
session.Handle(Key{Name: "tab"})
got, focused := session.Focused_control()
if focused != (want != "") || got.ID != want {
t.Fatal(got, want)
}
}
for _, want := range []string{"cancel", "ok", "text", "enabled", ""} {
session.Handle(Key{Name: "tab", Shift: true})
got, focused := session.Focused_control()
if focused != (want != "") || got.ID != want {
t.Fatal(got, want)
}
}
session.Handle(Key{Name: "tab"})
session.Handle(Key{Name: "tab"})
session.Handle(Key{Ctrl: true, Text: "a"})
session.Handle(Key{Text: "draft"})
session.Set_hidden("speech", "text", true)
if got, _ := session.Focused_control(); got.ID != "ok" {
t.Fatal("hidden focus retained", got)
}
session.Set_hidden("speech", "text", false)
session.Handle(Key{Name: "tab", Shift: true})
if got := session.Values()["speech.text"]; got.Text != "draft" || got.Hidden {
t.Fatal(got)
}
for _, id := range []string{"enabled", "range", "text", "ok", "cancel"} {
session.Set_hidden("speech", id, true)
}
if got := session.Handle(Key{Name: "tab"}).Speech; got != "Speech tab" {
t.Fatal("all-hidden tab trapped focus", got)
}
}