Charts I: components 101-120
This commit is contained in:
116 files changed
+7825
-3
No files matched your search
@@ -0,0 +1,71 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"slices"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
|
||||
mujica "mujicaui"
|
||||
)
|
||||
|
||||
// c1Demo runs page id's demo with an event log.
|
||||
func c1Demo(t *testing.T, id string) (*ui.Tester, *[]string) {
|
||||
t.Helper()
|
||||
i := slices.IndexFunc(charts1Pages, 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() {
|
||||
charts1Pages[i].Demo(c, func(s string) { *events = append(*events, s) })
|
||||
})
|
||||
}, 900, 760)
|
||||
tt.SetPreferences(ui.Preferences{ReduceMotion: true, TextScale: 1})
|
||||
return tt, events
|
||||
}
|
||||
|
||||
// c1Labels names each demo's chart for the keys.
|
||||
var c1Labels = map[string]string{
|
||||
"101": "Attendance", "102": "Attendance", "103": "Tithes", "104": "Stores", "105": "Choir", "106": "Skills",
|
||||
"107": "Hours", "108": "Prayers", "109": "Ages", "110": "Hymns", "111": "Ledger", "112": "Order", "113": "Alms",
|
||||
"114": "Bells 1", "115": "Nave", "116": "Rooms", "117": "Rooms", "118": "Money", "119": "House", "120": "Sound",
|
||||
}
|
||||
|
||||
func TestCharts1DemosLogReadouts(t *testing.T) {
|
||||
for _, p := range charts1Pages {
|
||||
if p.Category != "Charts I" || p.Code == "" || p.Keys == "" {
|
||||
t.Fatalf("%s: incomplete page", p.ID)
|
||||
}
|
||||
tt, events := c1Demo(t, p.ID)
|
||||
tabUntil(t, tt, c1Labels[p.ID])
|
||||
tt.Key(0, ui.KeyRight)
|
||||
if len(*events) == 0 || !strings.HasSuffix((*events)[len(*events)-1], "point 0") {
|
||||
t.Errorf("%s: keyboard readout not logged: %q", p.ID, *events)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCharts1TreemapDrillLogs(t *testing.T) {
|
||||
tt, events := c1Demo(t, "116")
|
||||
tabUntil(t, tt, "Rooms")
|
||||
tt.Key(0, ui.KeyRight)
|
||||
tt.Key(0, ui.KeyEnter)
|
||||
if !slices.Contains(*events, "Treemap: path /Library") {
|
||||
t.Fatalf("drill not logged: %q", *events)
|
||||
}
|
||||
}
|
||||
|
||||
func tabUntil(t *testing.T, tt *ui.Tester, label string) {
|
||||
t.Helper()
|
||||
for range 40 {
|
||||
if tt.Focused(label) {
|
||||
return
|
||||
}
|
||||
tt.Key(0, ui.KeyTab)
|
||||
}
|
||||
t.Fatalf("Tab never reached %q", label)
|
||||
}
|
||||
Reference in new issue
Block a user