Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / ui / base / ios / cru_context_menu_controller_unittest.mm
blob31863d78648d010ef36bc05b6d90cbeb051cf2c7
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #import "ui/base/ios/cru_context_menu_controller.h"
7 #import <UIKit/UIKit.h>
9 #include "base/mac/scoped_nsobject.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "testing/platform_test.h"
12 #import "ui/base/ios/cru_context_menu_holder.h"
14 namespace {
16 class ContextMenuControllerTest : public PlatformTest {
17  public:
18   ContextMenuControllerTest() { }
20   void SetUp() override {
21     _menuController.reset([[CRUContextMenuController alloc] init]);
22     _window.reset(
23         [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]);
24     [_window makeKeyAndVisible];
25   }
27  protected:
28   base::scoped_nsobject<CRUContextMenuController> _menuController;
29   base::scoped_nsobject<UIWindow> _window;
32 TEST_F(ContextMenuControllerTest, OneEntry) {
33   base::scoped_nsobject<CRUContextMenuHolder> holder(
34       [[CRUContextMenuHolder alloc] init]);
35   BOOL clicked = NO;
36   BOOL* clickedPtr = &clicked;
38   [holder appendItemWithTitle:@"foo" action:^{ *clickedPtr = YES; }];
39   [holder setMenuTitle:@"FooTitle"];
41   [_menuController showWithHolder:holder atPoint:CGPointZero inView:_window];
43   EXPECT_TRUE([_menuController isVisible]);
46 TEST_F(ContextMenuControllerTest, ShouldDismissImmediately) {
47   base::scoped_nsobject<CRUContextMenuHolder> holder(
48       [[CRUContextMenuHolder alloc] init]);
49   [holder appendItemWithTitle:@"foo" action:^{}];
50   [holder appendItemWithTitle:@"bar" action:^{} dismissImmediately:YES];
51   [holder appendItemWithTitle:@"baz" action:^{} dismissImmediately:NO];
53   EXPECT_FALSE([holder shouldDismissImmediatelyOnClickedAtIndex:0]);
54   EXPECT_TRUE([holder shouldDismissImmediatelyOnClickedAtIndex:1]);
55   EXPECT_FALSE([holder shouldDismissImmediatelyOnClickedAtIndex:2]);
58 }  // namespace