Calendar: components 421-440

This commit is contained in:
ZacharyZhang-NY committed 2026-10-05 14:35:41 -04:00
1 parent 609b4928ec
commit 3676cfc2c5
110 files changed
+7335 -23

No files matched your search

+98
View File
@@ -0,0 +1,98 @@
package mujica
import (
"testing"
"time"
"github.com/egoist/mygo/ui"
)
var tzNow = time.Date(2026, time.July, 1, 12, 0, 0, 0, time.UTC)
func timezoneTester(zone *string, opts *TimezoneSelectOptions, n *int) *ui.Tester {
return ui.NewTester(func(c *ui.Context) {
Use(c, Settings{})
o := *opts
o.Now = tzNow
ui.Column(c).Padding(16).Children(func() {
if TimezoneSelect(c, zone, o).Changed() {
*n++
}
})
}, 520, 640)
}
func TestTimezoneSelectSearchByNameAndOffset(t *testing.T) {
zone, n := "", 0
tt := timezoneTester(&zone, &TimezoneSelectOptions{}, &n)
_ = tt.Click("Time zone")
if !tt.HasText("Common") || !tt.HasText("UTC+09:00 Asia/Tokyo") || !tt.HasText("UTC−04:00 America/New York") {
t.Fatalf("summer offsets and sections: %v", tt.Texts()[:12])
}
tt.Type("kolk")
if !tt.HasText("UTC+05:30 Asia/Kolkata") || tt.HasText("UTC+09:00 Asia/Tokyo") {
t.Fatalf("name search: %v", tt.Texts())
}
tt.Key(0, ui.KeyEnter)
if zone != "Asia/Kolkata" || n != 1 || !tt.HasText("UTC+05:30 · Asia/Kolkata") {
t.Fatalf("Enter picked %q", zone)
}
_ = tt.Click("Time zone")
tt.Type("+12:45")
tt.Key(0, ui.KeyEnter)
if zone != "Pacific/Chatham" {
t.Fatalf("offset search picked %q", zone)
}
}
func TestTimezoneSelectKeysCommonClickEmpty(t *testing.T) {
zone, n := "UTC", 0
tt := timezoneTester(&zone, &TimezoneSelectOptions{Common: []string{"Europe/Paris"}, Zones: []string{"Asia/Tokyo", "Europe/Paris"}}, &n)
_ = tt.Click("Time zone")
tt.Key(0, ui.KeyDown)
tt.Key(0, ui.KeyEnter)
if zone != "Asia/Tokyo" || n != 1 {
t.Fatalf("Down then Enter picked %q", zone)
}
_ = tt.Click("Time zone")
_ = tt.Click("UTC+02:00 Europe/Paris")
if zone != "Europe/Paris" {
t.Fatalf("click picked %q", zone)
}
_ = tt.Click("Time zone")
tt.Type("atlantis")
if !tt.HasText("No matching time zone.") {
t.Fatal("no empty state")
}
}
func TestTimezoneSelectDisabledAndInvalid(t *testing.T) {
zone, n := "UTC", 0
tt := timezoneTester(&zone, &TimezoneSelectOptions{Disabled: true}, &n)
_ = tt.Click("Time zone")
tt.Key(0, ui.KeyTab)
tt.Key(0, ui.KeyDown)
if tt.HasText("Common") {
t.Fatal("disabled select opened")
}
defer func() {
if recover() == nil {
t.Fatal("expected panic for an unknown zone")
}
}()
bad := "Mars/Olympus"
timezoneTester(&bad, &TimezoneSelectOptions{}, &n)
}
func TestTimezoneOffsetHalfHours(t *testing.T) {
if got := TimezoneOffset(timezoneLoad("America/St_Johns"), tzNow); got != "UTC−02:30" {
t.Fatalf("offset %q", got)
}
}
func TestTimezoneSelectSnapshot(t *testing.T) {
zone := "Asia/Shanghai"
snapshot(t, "timezone_select", 420, 80, func(c *ui.Context) {
ui.Column(c).Padding(16).Children(func() { TimezoneSelect(c, &zone, TimezoneSelectOptions{Now: tzNow}) })
})
}