Files
MujicaUI/title_bar_test.go
T

83 lines
2.1 KiB
Go

package mujica
import (
"testing"
"github.com/egoist/mygo/ui"
)
func TestTitleBarDefaultHeight(t *testing.T) {
var r ui.Rect
ui.NewTester(func(c *ui.Context) {
Use(c, Settings{})
r = TitleBar(c, "Archive", TitleBarOptions{}).Bounds()
}, 400, 300).Frame()
if r.H != 44 || r.W != 400 {
t.Fatalf("bar %vx%v, want 400x44", r.W, r.H)
}
}
func TestTitleBarClearsWindowControls(t *testing.T) {
var r ui.Rect
tt := ui.NewTester(func(c *ui.Context) {
Use(c, Settings{})
r = TitleBar(c, "Archive", TitleBarOptions{
Trailing: func() { Button(c, "Share", ButtonOptions{Variant: Ghost}) },
}).Bounds()
}, 400, 300)
tt.SetTitleBar(ui.TitleBar{Height: 52, Left: 78, Right: 40})
tt.Frame()
if r.H != 52 {
t.Fatalf("bar height %v, want the controls' 52", r.H)
}
title, _ := tt.Find("Archive")
if title.X != 78+12 {
t.Fatalf("title at %v, want 90 past the controls", title.X)
}
share, _ := tt.Find("Share")
if share.X+share.W > 400-40-12+0.5 {
t.Fatalf("trailing tool ends at %v, inside the right controls", share.X+share.W)
}
}
func TestTitleBarSlotsStayClickable(t *testing.T) {
n := 0
tt := ui.NewTester(func(c *ui.Context) {
Use(c, Settings{})
TitleBar(c, "Archive", TitleBarOptions{
Leading: func() {
if Button(c, "Menu", ButtonOptions{Variant: Ghost}).Clicked() {
n++
}
},
})
}, 400, 300)
if err := tt.Click("Menu"); err != nil {
t.Fatal(err)
}
if n != 1 {
t.Fatalf("leading tool clicked %d times, want 1", n)
}
}
func TestTitleBarLongTitleKeepsTools(t *testing.T) {
tt := ui.NewTester(func(c *ui.Context) {
Use(c, Settings{})
TitleBar(c, "A very long window title that cannot possibly fit in the bar", TitleBarOptions{
Trailing: func() { Button(c, "Share", ButtonOptions{Variant: Ghost}) },
})
}, 240, 100)
share, ok := tt.Find("Share")
if !ok || share.X+share.W > 240-12+0.5 {
t.Fatalf("tool pushed out: %+v", share)
}
}
func TestTitleBarSnapshot(t *testing.T) {
snapshot(t, "title_bar", 420, 60, func(c *ui.Context) {
TitleBar(c, "Chronicle of the Court", TitleBarOptions{
Trailing: func() { Button(c, "Share", ButtonOptions{Variant: Ghost}) },
})
})
}