diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2024-08-24 15:04:33 -0400 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2024-08-24 15:04:33 -0400 |
| commit | a8a38817d7bdd7505a7156e390460d48863a6bb3 (patch) | |
| tree | 77e0d50b01c0777789b72f4a59e2158352104a41 /gui_test.go | |
| parent | eac0b4b31a1ae323222076dcb31dc7cd4d9402d5 (diff) | |
| download | gui-a8a38817d7bdd7505a7156e390460d48863a6bb3.zip | |
implement new layout design
Diffstat (limited to 'gui_test.go')
| -rw-r--r-- | gui_test.go | 86 |
1 files changed, 85 insertions, 1 deletions
diff --git a/gui_test.go b/gui_test.go index 584544a..0d18c92 100644 --- a/gui_test.go +++ b/gui_test.go @@ -1,6 +1,10 @@ package gui -import "time" +import ( + "image" + "image/draw" + "time" +) const timeout = 1 * time.Second @@ -25,3 +29,83 @@ func tryRecv[T any](c <-chan T, timeout time.Duration) (*T, bool) { return nil, false } } + +type dummyEnv struct { + eventsIn chan<- Event + eventsOut <-chan Event + + drawIn chan<- func(draw.Image) image.Rectangle + drawOut <-chan func(draw.Image) image.Rectangle + + kill chan<- bool + dead <-chan bool + + attachChan chan<- attachable +} + +func newDummyEnv(size image.Rectangle) dummyEnv { + eventsOut, eventsIn := makeEventsChan() + drawIn := make(chan func(draw.Image) image.Rectangle) + drawOut := make(chan func(draw.Image) image.Rectangle) + kill := make(chan bool) + dead := make(chan bool) + + attached := newAttachHandler() + + go func() { + defer func() { + dead <- true + close(dead) + }() + defer close(kill) + defer close(drawOut) + defer close(drawIn) + defer close(eventsIn) + defer func() { + go drain(drawIn) + attached.kill <- true + <-attached.dead + }() + + for { + select { + case d := <-drawIn: + drawOut <- d + case <-kill: + return + } + } + }() + + eventsIn <- Resize{size} + + return dummyEnv{eventsIn, eventsOut, drawIn, drawOut, kill, dead, attached.attach()} +} + +func (de dummyEnv) Events() <-chan Event { + return de.eventsOut +} + +func (de dummyEnv) Draw() chan<- func(draw.Image) image.Rectangle { + return de.drawIn +} + +func (de dummyEnv) Kill() chan<- bool { + return de.kill +} + +func (de dummyEnv) Dead() <-chan bool { + return de.dead +} + +func (de dummyEnv) attach() chan<- attachable { + return de.attachChan +} + +type dummyEvent struct { + s string +} + +func (e dummyEvent) String() string { + return e.s +} |