Cthulhu is no longer a fork. Now it is a screen reader written in Golang.
This commit is contained in:
1 parent
a998fe67de
commit
069fc674dc
708 files changed
+112482
-532
No files matched your search
@@ -0,0 +1,61 @@
|
||||
package app
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log/slog"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"git.stormux.org/storm/cthulhu/internal/atspi"
|
||||
"git.stormux.org/storm/cthulhu/internal/config"
|
||||
)
|
||||
|
||||
func TestAcceptedApplicationFocusPublishesSettingsIdentity(t *testing.T) {
|
||||
adapter := &fakeAdapter{events: make(chan atspi.Event, 4)}
|
||||
speech := &fakeSpeechQueue{spoken: make(chan string, 4)}
|
||||
applications := make(chan string, 4)
|
||||
live := &liveSettings{onApplication: func(name string) { applications <- name }}
|
||||
live.Store(config.DefaultSettings())
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
done := make(chan struct{})
|
||||
go func() {
|
||||
_ = processEventsWithInput(ctx, slog.New(slog.DiscardHandler), speech, adapter, nil, nil, 0, live, nil, nil, nil)
|
||||
close(done)
|
||||
}()
|
||||
defer func() { cancel(); <-done }()
|
||||
frame := atspi.NewSnapshot("/first/window", "First", "frame", "", "")
|
||||
frame.BusName, frame.ApplicationName = ":1.41", "First Editor"
|
||||
activated := atspi.NewEvent(atspi.WindowActivatedEvent, frame)
|
||||
activated.Window = frame.ID()
|
||||
adapter.events <- activated
|
||||
select {
|
||||
case name := <-applications:
|
||||
if name != "First Editor" {
|
||||
t.Fatalf("application = %q", name)
|
||||
}
|
||||
case <-time.After(time.Second):
|
||||
t.Fatal("accepted window did not publish application")
|
||||
}
|
||||
background := atspi.NewSnapshot("/background/window", "Background", "frame", "", "")
|
||||
background.BusName, background.ApplicationName = ":1.42", "Background Editor"
|
||||
ignored := atspi.NewEvent(atspi.FocusedStateEvent, background)
|
||||
ignored.Window, ignored.Detail1 = background.ID(), 1
|
||||
adapter.events <- ignored
|
||||
select {
|
||||
case name := <-applications:
|
||||
t.Fatalf("background focus published %q", name)
|
||||
case <-time.After(30 * time.Millisecond):
|
||||
}
|
||||
background.Focused = true
|
||||
focused := atspi.NewEvent(atspi.FocusedStateEvent, background)
|
||||
focused.Window, focused.Detail1 = background.ID(), 1
|
||||
adapter.events <- focused
|
||||
select {
|
||||
case name := <-applications:
|
||||
if name != "Background Editor" {
|
||||
t.Fatalf("foreground application = %q", name)
|
||||
}
|
||||
case <-time.After(time.Second):
|
||||
t.Fatal("accepted focus did not publish new application")
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user