You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: manager_test.go
    path of file: ./repos/wails/v2/internal/platform/menu
    
    the code of the file until where you have to start completion: //go:build windows

package menu_test

import (
	"github.com/stretchr/testify/require"
	platformMenu "github.com/wailsapp/wails/v2/internal/platform/menu"
	"github.com/wailsapp/wails/v2/pkg/menu"
	"testing"
)

func TestManager_ProcessClick_Checkbox(t *testing.T) {

	checkbox := menu.Label("Checkbox").SetChecked(false)
	menu1 := &menu.Menu{
		Items: []*menu.MenuItem{
			checkbox,
		},
	}
	menu2 := &menu.Menu{
		Items: []*menu.MenuItem{
			checkbox,
		},
	}
	menuWithNoCheckbox := &menu.Menu{
		Items: []*menu.MenuItem{
			menu.Label("No Checkbox"),
		},
	}
	clicked := false

	tests := []struct {
		name                string
		inputs              []*menu.Menu
		startState          bool
		expectedState       bool
		expectedMenuUpdates map[*menu.Menu][]*menu.MenuItem
		click               func(*menu.CallbackData)
	}{
		{
			name:   "should callback menu checkbox state when clicked (false -> true)",
			inputs: []*menu.Menu{menu1},
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
			},
			startState:    false,
			expectedState: true,
		},
		{
			name:          "should callback multiple menus when checkbox state when clicked (false -> true)",
			inputs:        []*menu.Menu{menu1, menu2},
			startState:    false,
			expectedState: true,
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
				menu2: {checkbox},
			},
		},
		{
			name:          "should callback only for the menus that the checkbox is in (false -> true)",
			inputs:        []*menu.Menu{menu1, menuWithNoCheckbox},
			startState:    false,
			expectedState: true,
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
			},
		},
		{
			name:   "should callback menu checkbox state when clicked (true->false)",
			inputs: []*menu.Menu{menu1},
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
			},
			startState:    true,
			expectedState: false,
		},
		{
			name:          "should callback multiple menus when checkbox state when clicked (true->false)",
			
    
func TestManager_ProcessClick_Checkbox(t *testing.T) {

	checkbox := menu.Label("Checkbox").SetChecked(false)
	menu1 := &menu.Menu{
		Items: []*menu.MenuItem{
			checkbox,
		},
	}
	menu2 := &menu.Menu{
		Items: []*menu.MenuItem{
			checkbox,
		},
	}
	menuWithNoCheckbox := &menu.Menu{
		Items: []*menu.MenuItem{
			menu.Label("No Checkbox"),
		},
	}
	clicked := false

	tests := []struct {
		name                string
		inputs              []*menu.Menu
		startState          bool
		expectedState       bool
		expectedMenuUpdates map[*menu.Menu][]*menu.MenuItem
		click               func(*menu.CallbackData)
	}{
		{
			name:   "should callback menu checkbox state when clicked (false -> true)",
			inputs: []*menu.Menu{menu1},
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
			},
			startState:    false,
			expectedState: true,
		},
		{
			name:          "should callback multiple menus when checkbox state when clicked (false -> true)",
			inputs:        []*menu.Menu{menu1, menu2},
			startState:    false,
			expectedState: true,
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
				menu2: {checkbox},
			},
		},
		{
			name:          "should callback only for the menus that the checkbox is in (false -> true)",
			inputs:        []*menu.Menu{menu1, menuWithNoCheckbox},
			startState:    false,
			expectedState: true,
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
			},
		},
		{
			name:   "should callback menu checkbox state when clicked (true->false)",
			inputs: []*menu.Menu{menu1},
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
			},
			startState:    true,
			expectedState: false,
		},
		{
			name:          "should callback multiple menus when checkbox state when clicked (true->false)",
			inputs:        []*menu.Menu{menu1, menu2},
			startState:    true,
			expectedState: false,
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
				menu2: {checkbox},
			},
		},
		{
			name:          "should callback only for the menus that the checkbox is in (true->false)",
			inputs:        []*menu.Menu{menu1, menuWithNoCheckbox},
			startState:    true,
			expectedState: false,
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
			},
		},
		{
			name:                "should callback no menus if checkbox not in them",
			inputs:              []*menu.Menu{menuWithNoCheckbox},
			startState:          false,
			expectedState:       false,
			expectedMenuUpdates: nil,
		},
		{
			name:          "should call Click on the checkbox",
			inputs:        []*menu.Menu{menu1, menu2},
			startState:    false,
			expectedState: true,
			expectedMenuUpdates: map[*menu.Menu][]*menu.MenuItem{
				menu1: {checkbox},
				menu2: {checkbox},
			},
			click: func(data *menu.CallbackData) {
				clicked = true
			},
		},
	}
	for _, tt := range tests {

		menusUpdated := map[*menu.Menu][]*menu.MenuItem{}
		clicked = false

		var checkMenuItemStateInMenu func(menu *menu.Menu)

		checkMenuItemStateInMenu = func(menu *menu.Menu) {
			for _, item := range menusUpdated[menu] {
				if item == checkbox {
					require.Equal(t, tt.expectedState, item.Checked)
				}
				if item.SubMenu != nil {
					checkMenuItemStateInMenu(item.SubMenu)
				}
			}
		}

		t.Run(tt.name, func(t *testing.T) {
			m := platformMenu.NewManager()
			checkbox.SetChecked(tt.startState)
			checkbox.Click = tt.click
			for _, thisMenu := range tt.inputs {
				thisMenu := thisMenu
				m.AddMenu(thisMenu, func(menuItem *menu.MenuItem) {
					menusUpdated[thisMenu] = append(menusUpdated[thisMenu], menuItem)
				})
			}
			m.ProcessClick(checkbox)

			// Check the item has the correct state in all the menus
			for thisMenu := range menusUpdated {
				require.EqualValues(t, tt.expectedMenuUpdates[thisMenu], menusUpdated[thisMenu])
			}

			if tt.click != nil {
				require.Equal(t, true, clicked)
			}
		})
	}
}