Split into category packages; module github.com/ZacharyZhang-NY/MujicaUI
This commit is contained in:
1822 files changed
+24568
-21314
No files matched your search
@@ -0,0 +1,102 @@
|
||||
package overlay
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
|
||||
"github.com/ZacharyZhang-NY/MujicaUI/core"
|
||||
"github.com/ZacharyZhang-NY/MujicaUI/input"
|
||||
)
|
||||
|
||||
func splitButtonTester(dis *bool, runs *int, chosen *string) *ui.Tester {
|
||||
return ui.NewTester(func(c *ui.Context) {
|
||||
core.Use(c, core.Settings{})
|
||||
ui.Row(c).Padding(20).Children(func() {
|
||||
r := SplitButton(c, "Save", SplitButtonOptions{Disabled: *dis}, func(m *PopupMenu) {
|
||||
for _, s := range []string{"Save as…", "Save all"} {
|
||||
if m.Item(s, PopupMenuItemOptions{}) {
|
||||
*chosen = s
|
||||
}
|
||||
}
|
||||
})
|
||||
if r.Changed() {
|
||||
*runs++
|
||||
}
|
||||
})
|
||||
}, 500, 300)
|
||||
}
|
||||
|
||||
func TestSplitButtonMainAndMenu(t *testing.T) {
|
||||
dis, runs, chosen := false, 0, ""
|
||||
tt := splitButtonTester(&dis, &runs, &chosen)
|
||||
if err := tt.Click("Save"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if runs != 1 || tt.HasText("Save all") {
|
||||
t.Fatalf("main click: runs %d, menu open %v", runs, tt.HasText("Save all"))
|
||||
}
|
||||
if err := tt.Click("More options"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := tt.Click("Save all"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if chosen != "Save all" || runs != 1 || tt.HasText("Save as…") {
|
||||
t.Fatalf("menu choice %q runs %d", chosen, runs)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSplitButtonKeyboardHalves(t *testing.T) {
|
||||
dis, runs, chosen := false, 0, ""
|
||||
tt := splitButtonTester(&dis, &runs, &chosen)
|
||||
tt.Key(0, ui.KeyTab)
|
||||
if !tt.Focused("Save") {
|
||||
t.Fatal("first Tab misses the main half")
|
||||
}
|
||||
tt.Key(0, ui.KeyEnter)
|
||||
tt.Key(0, ui.KeyTab)
|
||||
if !tt.Focused("More options") {
|
||||
t.Fatal("second Tab misses the menu half")
|
||||
}
|
||||
tt.Key(0, ui.KeyDown)
|
||||
if runs != 1 || !tt.HasText("Save as…") {
|
||||
t.Fatalf("runs %d, menu %v", runs, tt.HasText("Save as…"))
|
||||
}
|
||||
tt.Key(0, ui.KeyEnter)
|
||||
if chosen != "Save as…" {
|
||||
t.Fatalf("Enter chose %q", chosen)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSplitButtonDisabled(t *testing.T) {
|
||||
dis, runs, chosen := true, 0, ""
|
||||
tt := splitButtonTester(&dis, &runs, &chosen)
|
||||
_ = tt.Click("Save")
|
||||
_ = tt.Click("More options")
|
||||
tt.Key(0, ui.KeyTab)
|
||||
tt.Key(0, ui.KeyEnter)
|
||||
if runs != 0 || tt.HasText("Save all") {
|
||||
t.Fatalf("disabled: runs %d menu %v", runs, tt.HasText("Save all"))
|
||||
}
|
||||
defer func() {
|
||||
if recover() == nil {
|
||||
t.Fatal("Danger variant accepted")
|
||||
}
|
||||
}()
|
||||
ui.NewTester(func(c *ui.Context) {
|
||||
core.Use(c, core.Settings{})
|
||||
SplitButton(c, "x", SplitButtonOptions{Variant: input.Danger}, func(*PopupMenu) {})
|
||||
}, 200, 100)
|
||||
}
|
||||
|
||||
func TestSplitButtonSnapshot(t *testing.T) {
|
||||
snapshot(t, "split_button", 460, 80, func(c *ui.Context) {
|
||||
ui.Row(c).Padding(16).Gap(12).Children(func() {
|
||||
menu := func(m *PopupMenu) { m.Item("Other", PopupMenuItemOptions{}) }
|
||||
SplitButton(c, "Publish", SplitButtonOptions{}, menu)
|
||||
SplitButton(c, "Export", SplitButtonOptions{Variant: input.Secondary}, menu)
|
||||
SplitButton(c, "Merge", SplitButtonOptions{Disabled: true}, menu)
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user