| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #import "ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h" |
| |
| #import <UIKit/UIKit.h> |
| |
| #import "base/mac/foundation_util.h" |
| #include "testing/platform_test.h" |
| |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| |
| // Tests that if there is a popover, it uses the CGRect passed in init. |
| TEST(ActionSheetCoordinatorTest, CGRectUsage) { |
| // Setup. |
| UIWindow* window = |
| [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; |
| [window makeKeyAndVisible]; |
| UIViewController* viewController = [[UIViewController alloc] init]; |
| [window setRootViewController:viewController]; |
| |
| UIView* view = [[UIView alloc] initWithFrame:viewController.view.bounds]; |
| |
| [viewController.view addSubview:view]; |
| CGRect rect = CGRectMake(124, 432, 126, 63); |
| AlertCoordinator* alertCoordinator = |
| [[ActionSheetCoordinator alloc] initWithBaseViewController:viewController |
| title:@"title" |
| message:nil |
| rect:rect |
| view:view]; |
| |
| // Action. |
| [alertCoordinator start]; |
| |
| // Test. |
| // Get the alert. |
| EXPECT_TRUE([viewController.presentedViewController |
| isKindOfClass:[UIAlertController class]]); |
| UIAlertController* alertController = |
| base::mac::ObjCCastStrict<UIAlertController>( |
| viewController.presentedViewController); |
| |
| // Test the results. |
| EXPECT_EQ(UIAlertControllerStyleActionSheet, alertController.preferredStyle); |
| |
| if (alertController.popoverPresentationController) { |
| UIPopoverPresentationController* popover = |
| alertController.popoverPresentationController; |
| EXPECT_TRUE(CGRectEqualToRect(rect, popover.sourceRect)); |
| EXPECT_EQ(view, popover.sourceView); |
| } |
| |
| [alertCoordinator stop]; |
| } |