45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package devtools
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/egoist/mygo/ui"
|
|
|
|
"git.zacharyzhang.com/ZacharyZhang-NY/MujicaUI/core"
|
|
"git.zacharyzhang.com/ZacharyZhang-NY/MujicaUI/internal/snaptest"
|
|
)
|
|
|
|
// snapshot compares view in both themes with testdata/snapshots/<os>/<name>-<mode>.png.
|
|
func snapshot(t *testing.T, name string, w, h int, view func(c *ui.Context)) {
|
|
t.Helper()
|
|
snaptest.Run(t, name, w, h, snapshotTheme, view, nil)
|
|
}
|
|
|
|
// overlayUntil draws frames until cond holds, for at most 5 s of wall time.
|
|
func overlayUntil(tt *ui.Tester, cond func() bool) bool {
|
|
end := time.Now().Add(5 * time.Second)
|
|
for !cond() {
|
|
if time.Now().After(end) {
|
|
return false
|
|
}
|
|
time.Sleep(2 * time.Millisecond)
|
|
tt.Frame()
|
|
}
|
|
return true
|
|
}
|
|
|
|
// snapshotAfter is snapshot with drive sending input before the capture.
|
|
func snapshotAfter(t *testing.T, name string, w, h int, view func(c *ui.Context), drive func(tt *ui.Tester)) {
|
|
t.Helper()
|
|
snaptest.Run(t, name, w, h, snapshotTheme, view, drive)
|
|
}
|
|
|
|
func snapshotTheme(c *ui.Context, mode string) {
|
|
m := core.Light
|
|
if mode == "dark" {
|
|
m = core.Dark
|
|
}
|
|
core.Use(c, core.Settings{Mode: m})
|
|
}
|