package main import ( "slices" "testing" "github.com/egoist/mygo/ui" mujica "mujicaui" ) // dataDemo runs the demo of page id and returns its tester and event log. func dataDemo(t *testing.T, id string) (*ui.Tester, *[]string) { t.Helper() i := slices.IndexFunc(dataPages, func(p page) bool { return p.ID == id }) if i < 0 { t.Fatalf("no page %s", id) } events := &[]string{} tt := ui.NewTester(func(c *ui.Context) { mujica.Use(c, mujica.Settings{}) ui.Scroll(c).Fill().Padding(24).Children(func() { dataPages[i].Demo(c, func(s string) { *events = append(*events, s) }) }) }, 900, 700) tt.SetPreferences(ui.Preferences{ReduceMotion: true, TextScale: 1}) return tt, events } func TestDataDemoButtonsLog(t *testing.T) { tt, events := dataDemo(t, "074") for _, s := range []string{"Bells", "Ring"} { if err := tt.Click(s); err != nil { t.Fatal(err) } } if !slices.Contains(*events, "ring the bells") { t.Fatalf("Ring not logged: %q", *events) } tt, events = dataDemo(t, "075") for _, s := range []string{"Open from outside", "Light candles"} { if err := tt.Click(s); err != nil { t.Fatal(err) } } if !slices.Contains(*events, "light candles") { t.Fatalf("Light candles not logged: %q", *events) } }