48 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|