From a8a38817d7bdd7505a7156e390460d48863a6bb3 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Sat, 24 Aug 2024 15:04:33 -0400 Subject: implement new layout design --- gui_test.go | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 85 insertions(+), 1 deletion(-) (limited to 'gui_test.go') 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 +} -- cgit v1.2.3