Files
MujicaUI/data/description_list_test.go

84 lines
2.2 KiB
Go

package data
import (
"testing"
"github.com/egoist/mygo/ui"
"git.zacharyzhang.com/ZacharyZhang-NY/MujicaUI/core"
)
var descItems = []DescriptionItem{
{Label: "Archivist", Value: "Sister Agnès", Copyable: true},
{Label: "Shelf", Value: "North vault, row 7"},
{Label: "Seal", Value: "Wine-red wax, cracked", Span: -1},
}
func TestDescriptionListColumnsAndCopy(t *testing.T) {
width := float32(560)
copied := -1
tt := ui.NewTester(func(c *ui.Context) {
core.Use(c, core.Settings{})
ui.Column(c).Width(width).Children(func() {
if i, ok := DescriptionList(c, descItems, DescriptionListOptions{}).Copied(); ok {
copied = i
}
})
}, 700, 400)
a, _ := tt.Find("Archivist")
b, _ := tt.Find("Shelf")
seal, _ := tt.Find("Seal")
if a.Y != b.Y || b.X <= a.X || seal.Y <= a.Y {
t.Fatalf("two columns expected: %v %v %v", a, b, seal)
}
if err := tt.Click("Copy Archivist"); err != nil {
t.Fatal(err)
}
if tt.Clipboard() != "Sister Agnès" || copied != 0 {
t.Fatalf("clipboard %q copied %d", tt.Clipboard(), copied)
}
if _, ok := tt.Find("Copied"); !ok {
t.Fatal("copied mark missing")
}
width = 300
tt.Frame()
a, _ = tt.Find("Archivist")
b, _ = tt.Find("Shelf")
if b.Y <= a.Y || b.X != a.X {
t.Fatalf("narrow width kept columns: %v %v", a, b)
}
}
func TestDescriptionListSpan(t *testing.T) {
tt := ui.NewTester(func(c *ui.Context) {
core.Use(c, core.Settings{})
ui.Column(c).Width(900).Children(func() {
DescriptionList(c, []DescriptionItem{{Label: "A", Value: "a", Span: 2}, {Label: "B", Value: "b"}, {Label: "C", Value: "c"}}, DescriptionListOptions{Columns: 3})
})
}, 950, 300)
a, _ := tt.Find("a")
b, _ := tt.Find("b")
cc, _ := tt.Find("c")
if b.Y != a.Y || cc.Y <= a.Y {
t.Fatalf("span 2 of 3: a %v b %v c %v", a, b, cc)
}
}
func TestDescriptionListBadOptions(t *testing.T) {
defer func() {
if recover() == nil {
t.Fatal("no panic")
}
}()
ui.NewTester(func(c *ui.Context) {
core.Use(c, core.Settings{})
DescriptionList(c, nil, DescriptionListOptions{Columns: -1})
}, 100, 100)
}
func TestDescriptionListSnapshot(t *testing.T) {
snapshot(t, "description_list", 560, 200, func(c *ui.Context) {
ui.Column(c).Padding(20).Children(func() { DescriptionList(c, descItems, DescriptionListOptions{}) })
})
}