70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
// pkg/menu/mock_test.go
|
|
package menu
|
|
|
|
type mockPlatform struct {
|
|
menus []*mockMenu
|
|
appMenu PlatformMenu
|
|
}
|
|
|
|
func newMockPlatform() *mockPlatform { return &mockPlatform{} }
|
|
|
|
func (p *mockPlatform) NewMenu() PlatformMenu {
|
|
m := &mockMenu{}
|
|
p.menus = append(p.menus, m)
|
|
return m
|
|
}
|
|
|
|
func (p *mockPlatform) SetApplicationMenu(menu PlatformMenu) { p.appMenu = menu }
|
|
|
|
type mockMenu struct {
|
|
items []*mockMenuItem
|
|
subs []*mockMenu
|
|
roles []MenuRole
|
|
}
|
|
|
|
func (m *mockMenu) Add(label string) PlatformMenuItem {
|
|
mi := &mockMenuItem{label: label}
|
|
m.items = append(m.items, mi)
|
|
return mi
|
|
}
|
|
|
|
func (m *mockMenu) AddSeparator() {
|
|
m.items = append(m.items, &mockMenuItem{label: "---"})
|
|
}
|
|
|
|
func (m *mockMenu) AddSubmenu(label string) PlatformMenu {
|
|
sub := &mockMenu{}
|
|
m.subs = append(m.subs, sub)
|
|
m.items = append(m.items, &mockMenuItem{label: label, isSubmenu: true})
|
|
return sub
|
|
}
|
|
|
|
func (m *mockMenu) AddRole(role MenuRole) { m.roles = append(m.roles, role) }
|
|
|
|
type mockMenuItem struct {
|
|
label, accel, tooltip string
|
|
checked, enabled bool
|
|
isSubmenu bool
|
|
onClick func()
|
|
}
|
|
|
|
func (mi *mockMenuItem) SetAccelerator(accel string) PlatformMenuItem {
|
|
mi.accel = accel
|
|
return mi
|
|
}
|
|
func (mi *mockMenuItem) SetTooltip(text string) PlatformMenuItem {
|
|
mi.tooltip = text
|
|
return mi
|
|
}
|
|
func (mi *mockMenuItem) SetChecked(checked bool) PlatformMenuItem {
|
|
mi.checked = checked
|
|
return mi
|
|
}
|
|
func (mi *mockMenuItem) SetEnabled(enabled bool) PlatformMenuItem {
|
|
mi.enabled = enabled
|
|
return mi
|
|
}
|
|
func (mi *mockMenuItem) OnClick(fn func()) PlatformMenuItem {
|
|
mi.onClick = fn
|
|
return mi
|
|
}
|