Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: ios/chrome/browser/ui/main/main_view_controller_unittest.mm

Issue 2687913002: [ObjC ARC] Converts ios/chrome/browser/ui/main:unit_tests to ARC. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ios/chrome/browser/ui/main/main_coordinator_unittest.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ios/chrome/browser/ui/main/main_view_controller.h" 5 #include "ios/chrome/browser/ui/main/main_view_controller.h"
6 6
7 #import <UIKit/UIKit.h> 7 #import <UIKit/UIKit.h>
8 8
9 #include "base/mac/scoped_nsobject.h"
10 #include "testing/gtest_mac.h" 9 #include "testing/gtest_mac.h"
11 10
11 #if !defined(__has_feature) || !__has_feature(objc_arc)
12 #error "This file requires ARC support."
13 #endif
14
12 @interface HiddenStatusBarViewController : UIViewController 15 @interface HiddenStatusBarViewController : UIViewController
13 @end 16 @end
14 17
15 @implementation HiddenStatusBarViewController 18 @implementation HiddenStatusBarViewController
16 - (BOOL)prefersStatusBarHidden { 19 - (BOOL)prefersStatusBarHidden {
17 return YES; 20 return YES;
18 } 21 }
19 @end 22 @end
20 23
21 @interface MockViewController : UIViewController 24 @interface MockViewController : UIViewController
22 @property(nonatomic, readonly) NSInteger didMoveToParentViewControllerCount; 25 @property(nonatomic, readonly) NSInteger didMoveToParentViewControllerCount;
23 @property(nonatomic, readonly) id didMoveToParentViewControllerArgument; 26 @property(weak, nonatomic, readonly) id didMoveToParentViewControllerArgument;
marq (ping after 24h) 2017/02/10 11:02:40 Nit: Prefer to keep atomicity first, then storage
24 @property(nonatomic, readonly) NSInteger willMoveToParentViewControllerCount; 27 @property(nonatomic, readonly) NSInteger willMoveToParentViewControllerCount;
25 @property(nonatomic, readonly) id willMoveToParentViewControllerArgument; 28 @property(weak, nonatomic, readonly) id willMoveToParentViewControllerArgument;
26 @end 29 @end
27 30
28 @implementation MockViewController 31 @implementation MockViewController
29 @synthesize didMoveToParentViewControllerCount = 32 @synthesize didMoveToParentViewControllerCount =
30 _didMoveToParentViewControllerCount; 33 _didMoveToParentViewControllerCount;
31 @synthesize didMoveToParentViewControllerArgument = 34 @synthesize didMoveToParentViewControllerArgument =
32 _didMoveToParentViewControllerArgument; 35 _didMoveToParentViewControllerArgument;
33 @synthesize willMoveToParentViewControllerCount = 36 @synthesize willMoveToParentViewControllerCount =
34 _willMoveToParentViewControllerCount; 37 _willMoveToParentViewControllerCount;
35 @synthesize willMoveToParentViewControllerArgument = 38 @synthesize willMoveToParentViewControllerArgument =
36 _willMoveToParentViewControllerArgument; 39 _willMoveToParentViewControllerArgument;
37 40
38 - (void)didMoveToParentViewController:(UIViewController*)parent { 41 - (void)didMoveToParentViewController:(UIViewController*)parent {
39 _didMoveToParentViewControllerCount++; 42 _didMoveToParentViewControllerCount++;
40 _didMoveToParentViewControllerArgument = parent; 43 _didMoveToParentViewControllerArgument = parent;
41 } 44 }
42 45
43 - (void)willMoveToParentViewController:(UIViewController*)parent { 46 - (void)willMoveToParentViewController:(UIViewController*)parent {
44 _willMoveToParentViewControllerCount++; 47 _willMoveToParentViewControllerCount++;
45 _willMoveToParentViewControllerArgument = parent; 48 _willMoveToParentViewControllerArgument = parent;
46 } 49 }
47 50
48 @end 51 @end
49 52
50 namespace { 53 namespace {
51 54
52 TEST(MainViewControllerTest, ActiveVC) { 55 TEST(MainViewControllerTest, ActiveVC) {
53 base::scoped_nsobject<MainViewController> main_view_controller( 56 MainViewController* main_view_controller = [[MainViewController alloc] init];
54 [[MainViewController alloc] init]); 57 UIViewController* child_view_controller_1 = [[UIViewController alloc] init];
55 base::scoped_nsobject<UIViewController> child_view_controller_1( 58 UIViewController* child_view_controller_2 = [[UIViewController alloc] init];
56 [[UIViewController alloc] init]);
57 base::scoped_nsobject<UIViewController> child_view_controller_2(
58 [[UIViewController alloc] init]);
59 59
60 // Test that the active view controller is always the first child view 60 // Test that the active view controller is always the first child view
61 // controller. 61 // controller.
62 EXPECT_EQ(nil, [main_view_controller activeViewController]); 62 EXPECT_EQ(nil, [main_view_controller activeViewController]);
63 [main_view_controller addChildViewController:child_view_controller_1]; 63 [main_view_controller addChildViewController:child_view_controller_1];
64 EXPECT_EQ(child_view_controller_1.get(), 64 EXPECT_EQ(child_view_controller_1,
65 [main_view_controller activeViewController]); 65 [main_view_controller activeViewController]);
66 [main_view_controller addChildViewController:child_view_controller_2]; 66 [main_view_controller addChildViewController:child_view_controller_2];
67 EXPECT_EQ(child_view_controller_1.get(), 67 EXPECT_EQ(child_view_controller_1,
68 [main_view_controller activeViewController]); 68 [main_view_controller activeViewController]);
69 [child_view_controller_1 removeFromParentViewController]; 69 [child_view_controller_1 removeFromParentViewController];
70 EXPECT_EQ(child_view_controller_2.get(), 70 EXPECT_EQ(child_view_controller_2,
71 [main_view_controller activeViewController]); 71 [main_view_controller activeViewController]);
72 } 72 }
73 73
74 TEST(MainViewControllerTest, SetActiveVC) { 74 TEST(MainViewControllerTest, SetActiveVC) {
75 base::scoped_nsobject<MainViewController> main_view_controller( 75 MainViewController* main_view_controller = [[MainViewController alloc] init];
76 [[MainViewController alloc] init]);
77 CGRect windowRect = CGRectMake(0, 0, 200, 200); 76 CGRect windowRect = CGRectMake(0, 0, 200, 200);
78 [main_view_controller view].frame = windowRect; 77 [main_view_controller view].frame = windowRect;
79 78
80 base::scoped_nsobject<MockViewController> child_view_controller_1( 79 MockViewController* child_view_controller_1 =
81 [[MockViewController alloc] init]); 80 [[MockViewController alloc] init];
82 [child_view_controller_1 view].frame = CGRectMake(0, 0, 10, 10); 81 [child_view_controller_1 view].frame = CGRectMake(0, 0, 10, 10);
83 82
84 [main_view_controller setActiveViewController:child_view_controller_1]; 83 [main_view_controller setActiveViewController:child_view_controller_1];
85 EXPECT_EQ(child_view_controller_1.get(), 84 EXPECT_EQ(child_view_controller_1,
86 [[main_view_controller childViewControllers] firstObject]); 85 [[main_view_controller childViewControllers] firstObject]);
87 EXPECT_EQ([child_view_controller_1 view], 86 EXPECT_EQ([child_view_controller_1 view],
88 [[main_view_controller view].subviews firstObject]); 87 [[main_view_controller view].subviews firstObject]);
89 EXPECT_NSEQ(NSStringFromCGRect(windowRect), 88 EXPECT_NSEQ(NSStringFromCGRect(windowRect),
90 NSStringFromCGRect([child_view_controller_1 view].frame)); 89 NSStringFromCGRect([child_view_controller_1 view].frame));
91 EXPECT_EQ(1, [child_view_controller_1 didMoveToParentViewControllerCount]); 90 EXPECT_EQ(1, [child_view_controller_1 didMoveToParentViewControllerCount]);
92 EXPECT_EQ(main_view_controller.get(), 91 EXPECT_EQ(main_view_controller,
93 [child_view_controller_1 didMoveToParentViewControllerArgument]); 92 [child_view_controller_1 didMoveToParentViewControllerArgument]);
94 // Expect there to have also been an automatic call to 93 // Expect there to have also been an automatic call to
95 // -willMoveToParentViewController. 94 // -willMoveToParentViewController.
96 EXPECT_EQ(1, [child_view_controller_1 willMoveToParentViewControllerCount]); 95 EXPECT_EQ(1, [child_view_controller_1 willMoveToParentViewControllerCount]);
97 EXPECT_EQ(main_view_controller.get(), 96 EXPECT_EQ(main_view_controller,
98 [child_view_controller_1 willMoveToParentViewControllerArgument]); 97 [child_view_controller_1 willMoveToParentViewControllerArgument]);
99 98
100 base::scoped_nsobject<UIViewController> child_view_controller_2( 99 UIViewController* child_view_controller_2 = [[UIViewController alloc] init];
101 [[UIViewController alloc] init]);
102 [main_view_controller setActiveViewController:child_view_controller_2]; 100 [main_view_controller setActiveViewController:child_view_controller_2];
103 EXPECT_EQ(child_view_controller_2.get(), 101 EXPECT_EQ(child_view_controller_2,
104 [[main_view_controller childViewControllers] firstObject]); 102 [[main_view_controller childViewControllers] firstObject]);
105 EXPECT_EQ(1U, [[main_view_controller childViewControllers] count]); 103 EXPECT_EQ(1U, [[main_view_controller childViewControllers] count]);
106 EXPECT_EQ(nil, [[child_view_controller_1 view] superview]); 104 EXPECT_EQ(nil, [[child_view_controller_1 view] superview]);
107 EXPECT_EQ(2, [child_view_controller_1 willMoveToParentViewControllerCount]); 105 EXPECT_EQ(2, [child_view_controller_1 willMoveToParentViewControllerCount]);
108 EXPECT_EQ(nil, 106 EXPECT_EQ(nil,
109 [child_view_controller_1 willMoveToParentViewControllerArgument]); 107 [child_view_controller_1 willMoveToParentViewControllerArgument]);
110 // Expect there to have also been an automatic call to 108 // Expect there to have also been an automatic call to
111 // -didMoveToParentViewController. 109 // -didMoveToParentViewController.
112 EXPECT_EQ(2, [child_view_controller_1 willMoveToParentViewControllerCount]); 110 EXPECT_EQ(2, [child_view_controller_1 willMoveToParentViewControllerCount]);
113 EXPECT_EQ(nil, 111 EXPECT_EQ(nil,
114 [child_view_controller_1 didMoveToParentViewControllerArgument]); 112 [child_view_controller_1 didMoveToParentViewControllerArgument]);
115 } 113 }
116 114
117 TEST(MainViewControllerTest, StatusBar) { 115 TEST(MainViewControllerTest, StatusBar) {
118 base::scoped_nsobject<MainViewController> main_view_controller( 116 MainViewController* main_view_controller = [[MainViewController alloc] init];
119 [[MainViewController alloc] init]);
120 // MVC needs to be the root view controller for this to work, so save the 117 // MVC needs to be the root view controller for this to work, so save the
121 // current one and restore it at the end of the test. 118 // current one and restore it at the end of the test.
122 UIViewController* root_view_controller = 119 UIViewController* root_view_controller =
123 [[[UIApplication sharedApplication] keyWindow] rootViewController]; 120 [[[UIApplication sharedApplication] keyWindow] rootViewController];
124 [[UIApplication sharedApplication] keyWindow].rootViewController = 121 [[UIApplication sharedApplication] keyWindow].rootViewController =
125 main_view_controller; 122 main_view_controller;
126 base::scoped_nsobject<UIViewController> status_bar_visible_view_controller( 123 UIViewController* status_bar_visible_view_controller =
127 [[UIViewController alloc] init]); 124 [[UIViewController alloc] init];
128 [main_view_controller 125 [main_view_controller
129 setActiveViewController:status_bar_visible_view_controller]; 126 setActiveViewController:status_bar_visible_view_controller];
130 // Check if the status bar is hidden by testing if the status bar rect is 127 // Check if the status bar is hidden by testing if the status bar rect is
131 // CGRectZero. 128 // CGRectZero.
132 EXPECT_FALSE(CGRectEqualToRect( 129 EXPECT_FALSE(CGRectEqualToRect(
133 [UIApplication sharedApplication].statusBarFrame, CGRectZero)); 130 [UIApplication sharedApplication].statusBarFrame, CGRectZero));
134 base::scoped_nsobject<HiddenStatusBarViewController> 131 HiddenStatusBarViewController* status_bar_hidden_view_controller =
135 status_bar_hidden_view_controller( 132 [[HiddenStatusBarViewController alloc] init];
136 [[HiddenStatusBarViewController alloc] init]);
137 [main_view_controller 133 [main_view_controller
138 setActiveViewController:status_bar_hidden_view_controller]; 134 setActiveViewController:status_bar_hidden_view_controller];
139 EXPECT_EQ([main_view_controller childViewControllerForStatusBarHidden], 135 EXPECT_EQ([main_view_controller childViewControllerForStatusBarHidden],
140 status_bar_hidden_view_controller.get()); 136 status_bar_hidden_view_controller);
141 EXPECT_TRUE(CGRectEqualToRect( 137 EXPECT_TRUE(CGRectEqualToRect(
142 [UIApplication sharedApplication].statusBarFrame, CGRectZero)); 138 [UIApplication sharedApplication].statusBarFrame, CGRectZero));
143 [[UIApplication sharedApplication] keyWindow].rootViewController = 139 [[UIApplication sharedApplication] keyWindow].rootViewController =
144 root_view_controller; 140 root_view_controller;
145 } 141 }
146 142
147 } // namespace 143 } // namespace
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/main/main_coordinator_unittest.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698