92 NSMenu* mainMenu = [[NSMenu alloc] init];
93 NSMenuItem* appNameMenu = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"APP_NAME", nil)
97 [[NSMenu alloc] initWithTitle:NSLocalizedString(@"Prexisting APP_NAME menu", nil)];
98 [submenu addItem:[[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"About APP_NAME", nil)
101 appNameMenu.submenu = submenu;
102 [mainMenu addItem:appNameMenu];
103 [NSApp setMainMenu:mainMenu];
109 NSDictionary* testMenus = @{
112 @"id" : [NSNumber numberWithInt:1],
113 @"label" : @"APP_NAME",
114 @"tooltip" : @"APP_NAME",
118 @"id" : [NSNumber numberWithInt:3],
119 @"platformProvidedMenu" : @(static_cast<int>(flutter::PlatformProvidedMenu::kQuit)),
123 @"id" : [NSNumber numberWithInt:2],
124 @"label" : @"APP_NAME Info",
125 @"tooltip" : @"APP_NAME Info Tooltip",
127 @"shortcutTrigger" : [NSNumber numberWithUnsignedLongLong:0x61],
128 @"shortcutModifiers" : [NSNumber numberWithUnsignedInt:0],
133 @"id" : [NSNumber numberWithInt:4],
134 @"label" : @"Help for APP_NAME",
138 @"id" : [NSNumber numberWithInt:5],
139 @"label" : @"Help me!",
140 @"tooltip" : @"Help me tooltip!",
144 @"id" : [NSNumber numberWithInt:6],
147 @"isDivider" : @(YES),
150 @"id" : [NSNumber numberWithInt:7],
151 @"label" : @"Search help",
159 __block
id available = @NO;
162 result:^(id _Nullable result) {
166 EXPECT_TRUE(available);
170 result:^(id _Nullable result){
173 EXPECT_EQ([NSApp.mainMenu numberOfItems], 2);
174 NSMenuItem* firstMenu = [NSApp.mainMenu itemAtIndex:0];
175 EXPECT_TRUE([[firstMenu title] isEqualToString:
@"flutter_desktop_darwin_unittests"]);
176 EXPECT_TRUE([[firstMenu toolTip] isEqualToString:
@"flutter_desktop_darwin_unittests"]);
177 EXPECT_EQ([firstMenu tag], 1);
178 EXPECT_TRUE([firstMenu isEnabled]);
179 EXPECT_FALSE([firstMenu isHidden]);
180 EXPECT_TRUE([[firstMenu keyEquivalent] isEqualToString:
@"\0"]);
182 EXPECT_EQ([[firstMenu submenu] numberOfItems], 1);
183 NSMenuItem* firstItem = [[firstMenu submenu] itemAtIndex:0];
184 EXPECT_TRUE([[firstItem title] isEqualToString:
@"flutter_desktop_darwin_unittests Info"]);
186 [[firstItem toolTip] isEqualToString:
@"flutter_desktop_darwin_unittests Info Tooltip"]);
187 EXPECT_TRUE([[firstItem keyEquivalent] isEqualToString:
@"a"]);
188 EXPECT_TRUE([firstItem isEnabled]);
189 EXPECT_FALSE([firstItem isHidden]);
191 [NSStringFromSelector([firstItem
action]) isEqualToString:
@"flutterMenuItemSelected:"]);
192 EXPECT_EQ([firstItem tag], 2);
194 NSMenuItem* secondMenu = [NSApp.mainMenu itemAtIndex:1];
195 EXPECT_TRUE([[secondMenu title] isEqualToString:
@"Help for flutter_desktop_darwin_unittests"]);
196 EXPECT_EQ([secondMenu toolTip], nil);
197 EXPECT_EQ([secondMenu tag], 4);
198 EXPECT_TRUE([secondMenu isEnabled]);
199 EXPECT_FALSE([secondMenu isHidden]);
201 EXPECT_EQ([[secondMenu submenu] numberOfItems], 3);
202 NSMenuItem* secondMenuFirst = [[secondMenu submenu] itemAtIndex:0];
203 EXPECT_TRUE([[secondMenuFirst title] isEqualToString:
@"Help me!"]);
204 EXPECT_TRUE([[secondMenuFirst toolTip] isEqualToString:
@"Help me tooltip!"]);
205 EXPECT_TRUE([secondMenuFirst isEnabled]);
206 EXPECT_FALSE([secondMenuFirst isHidden]);
208 [NSStringFromSelector([secondMenuFirst
action]) isEqualToString:
@"flutterMenuItemSelected:"]);
209 EXPECT_EQ([secondMenuFirst tag], 5);
211 NSMenuItem* secondMenuDivider = [[secondMenu submenu] itemAtIndex:1];
212 EXPECT_TRUE([[secondMenuDivider title] isEqualToString:
@""]);
213 EXPECT_EQ([secondMenuDivider toolTip], nil);
214 EXPECT_TRUE([[secondMenuDivider keyEquivalent] isEqualToString:
@""]);
215 EXPECT_FALSE([secondMenuDivider isEnabled]);
216 EXPECT_FALSE([secondMenuDivider isHidden]);
217 EXPECT_EQ([secondMenuDivider
action], nil);
218 EXPECT_EQ([secondMenuDivider tag], 0);
220 NSMenuItem* secondMenuLast = [[secondMenu submenu] itemAtIndex:2];
221 EXPECT_TRUE([[secondMenuLast title] isEqualToString:
@"Search help"]);
222 EXPECT_EQ([secondMenuLast toolTip], nil);
223 EXPECT_FALSE([secondMenuLast isEnabled]);
224 EXPECT_FALSE([secondMenuLast isHidden]);
226 [NSStringFromSelector([secondMenuLast
action]) isEqualToString:
@"flutterMenuItemSelected:"]);
227 EXPECT_EQ([secondMenuLast tag], 7);