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

Side by Side Diff: ios/chrome/browser/ui/stack_view/stack_view_controller_unittest.mm

Issue 2686573003: [ObjC ARC] Converts ios/chrome/browser/ui/stack_view:unit_tests to ARC. (Closed)
Patch Set: weak 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 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 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 #import <QuartzCore/QuartzCore.h> 5 #import <QuartzCore/QuartzCore.h>
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/mac/scoped_nsautorelease_pool.h"
9 #include "base/mac/scoped_nsobject.h"
10 #import "ios/chrome/browser/tabs/tab_model.h" 8 #import "ios/chrome/browser/tabs/tab_model.h"
11 #import "ios/chrome/browser/ui/stack_view/card_set.h" 9 #import "ios/chrome/browser/ui/stack_view/card_set.h"
12 #import "ios/chrome/browser/ui/stack_view/stack_card.h" 10 #import "ios/chrome/browser/ui/stack_view/stack_card.h"
13 #import "ios/chrome/browser/ui/stack_view/stack_view_controller.h" 11 #import "ios/chrome/browser/ui/stack_view/stack_view_controller.h"
14 #import "ios/chrome/browser/ui/stack_view/stack_view_controller_private.h" 12 #import "ios/chrome/browser/ui/stack_view/stack_view_controller_private.h"
15 #include "ios/chrome/test/block_cleanup_test.h" 13 #include "ios/chrome/test/block_cleanup_test.h"
16 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
17 #include "testing/gtest_mac.h" 15 #include "testing/gtest_mac.h"
18 #include "third_party/ocmock/OCMock/OCMock.h" 16 #include "third_party/ocmock/OCMock/OCMock.h"
19 17
18 #if !defined(__has_feature) || !__has_feature(objc_arc)
19 #error "This file requires ARC support."
20 #endif
21
20 namespace { 22 namespace {
21 23
22 const CGFloat kViewportDimension = 200; 24 const CGFloat kViewportDimension = 200;
23 25
24 } // namespace 26 } // namespace
25 27
26 #pragma mark - 28 #pragma mark -
27 29
28 @interface MockCardSet : NSObject { 30 @interface MockCardSet : NSObject {
29 @private 31 @private
30 UIView* displayView_; 32 UIView* displayView_;
31 CGSize cardSize_; 33 CGSize cardSize_;
32 CGFloat layoutAxisPosition_; 34 CGFloat layoutAxisPosition_;
33 BOOL initialConfigurationSet_; 35 BOOL initialConfigurationSet_;
34 id observer_;
35 } 36 }
36 37
37 // CardSet simulation 38 // CardSet simulation
38 @property(nonatomic, retain, readwrite) UIView* displayView; 39 @property(nonatomic, strong, readwrite) UIView* displayView;
39 @property(nonatomic, assign, readwrite) CGSize cardSize; 40 @property(nonatomic, assign, readwrite) CGSize cardSize;
40 @property(nonatomic, assign, readwrite) id<CardSetObserver> observer; 41 @property(nonatomic, weak, readwrite) id<CardSetObserver> observer;
41 @property(nonatomic, assign, readwrite) BOOL keepOnlyVisibleCardViewsAlive; 42 @property(nonatomic, assign, readwrite) BOOL keepOnlyVisibleCardViewsAlive;
42 43
43 - (void)configureLayoutParametersWithMargin:(CGFloat)margin; 44 - (void)configureLayoutParametersWithMargin:(CGFloat)margin;
44 - (void)setLayoutAxisPosition:(CGFloat)position 45 - (void)setLayoutAxisPosition:(CGFloat)position
45 isVertical:(BOOL)layoutIsVertical; 46 isVertical:(BOOL)layoutIsVertical;
46 - (void)clearGestureRecognizerTargetAndDelegateFromCards:(id)object; 47 - (void)clearGestureRecognizerTargetAndDelegateFromCards:(id)object;
47 - (NSArray*)cards; 48 - (NSArray*)cards;
48 - (CGFloat)maximumStackLength; 49 - (CGFloat)maximumStackLength;
49 - (void)displayViewSizeWasChanged; 50 - (void)displayViewSizeWasChanged;
50 - (TabModel*)tabModel; 51 - (TabModel*)tabModel;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 105
105 #pragma mark - 106 #pragma mark -
106 107
107 namespace { 108 namespace {
108 109
109 class StackViewControllerTest : public BlockCleanupTest { 110 class StackViewControllerTest : public BlockCleanupTest {
110 protected: 111 protected:
111 void SetUp() override { 112 void SetUp() override {
112 BlockCleanupTest::SetUp(); 113 BlockCleanupTest::SetUp();
113 114
114 main_card_set_.reset([[MockCardSet alloc] init]); 115 main_card_set_ = [[MockCardSet alloc] init];
115 otr_card_set_.reset([[MockCardSet alloc] init]); 116 otr_card_set_ = [[MockCardSet alloc] init];
116 117
117 view_controller_.reset([[StackViewController alloc] 118 view_controller_ = [[StackViewController alloc]
118 initWithMainCardSet:(CardSet*)main_card_set_.get() 119 initWithMainCardSet:(CardSet*)main_card_set_
sdefresne 2017/02/09 13:47:50 static_cast
lody 2017/02/09 16:00:03 Done.
119 otrCardSet:(CardSet*)otr_card_set_.get() 120 otrCardSet:(CardSet*)otr_card_set_
120 activeCardSet:(CardSet*)main_card_set_.get()]); 121 activeCardSet:(CardSet*)main_card_set_];
121 // Resize the view and call VC lifecycle events 122 // Resize the view and call VC lifecycle events
122 [view_controller_ view].frame = 123 [view_controller_ view].frame =
123 CGRectMake(0.0, 0.0, kViewportDimension, kViewportDimension); 124 CGRectMake(0.0, 0.0, kViewportDimension, kViewportDimension);
124 // Simulate displaying the view. 125 // Simulate displaying the view.
125 [view_controller_ viewWillAppear:NO]; 126 [view_controller_ viewWillAppear:NO];
126 } 127 }
127 void TearDown() override { 128 void TearDown() override {
128 // The view controller uses a delayed selector call, so in the unittests 129 // The view controller uses a delayed selector call, so in the unittests
129 // that causes the controller to be retained and outlive the test. 130 // that causes the controller to be retained and outlive the test.
130 [NSObject cancelPreviousPerformRequestsWithTarget:view_controller_.get()]; 131 [NSObject cancelPreviousPerformRequestsWithTarget:view_controller_];
131 // And there are likely animations still running. 132 // And there are likely animations still running.
132 for (UIView* view in [[view_controller_ scrollView] subviews]) { 133 for (UIView* view in [[view_controller_ scrollView] subviews]) {
133 // Remove any animations on cards themselves. 134 // Remove any animations on cards themselves.
134 for (UIView* subview in [view subviews]) { 135 for (UIView* subview in [view subviews]) {
135 [subview.layer removeAllAnimations]; 136 [subview.layer removeAllAnimations];
136 } 137 }
137 [view.layer removeAllAnimations]; 138 [view.layer removeAllAnimations];
138 } 139 }
139 [[[view_controller_ scrollView] layer] removeAllAnimations]; 140 [[[view_controller_ scrollView] layer] removeAllAnimations];
140 141
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 } else { 177 } else {
177 EXPECT_FLOAT_EQ(display_view_origin.x, content_offset); 178 EXPECT_FLOAT_EQ(display_view_origin.x, content_offset);
178 EXPECT_FLOAT_EQ(display_view_origin.y, 0); 179 EXPECT_FLOAT_EQ(display_view_origin.y, 0);
179 EXPECT_GT([[view_controller_ scrollView] contentSize].width, 180 EXPECT_GT([[view_controller_ scrollView] contentSize].width,
180 [card_set maximumStackLength]); 181 [card_set maximumStackLength]);
181 EXPECT_FLOAT_EQ(card_set.displayView.bounds.size.height, 182 EXPECT_FLOAT_EQ(card_set.displayView.bounds.size.height,
182 [[view_controller_ scrollView] contentSize].height); 183 [[view_controller_ scrollView] contentSize].height);
183 } 184 }
184 } 185 }
185 186
186 base::scoped_nsobject<StackViewController> view_controller_; 187 StackViewController* view_controller_;
187 base::scoped_nsobject<MockCardSet> main_card_set_; 188 MockCardSet* main_card_set_;
188 base::scoped_nsobject<MockCardSet> otr_card_set_; 189 MockCardSet* otr_card_set_;
189 }; 190 };
190 191
191 TEST_F(StackViewControllerTest, BasicConfiguration) { 192 TEST_F(StackViewControllerTest, BasicConfiguration) {
192 // Ensure that the CardSet is configured and correctly laid out. 193 // Ensure that the CardSet is configured and correctly laid out.
193 EXPECT_TRUE([main_card_set_ configured]); 194 EXPECT_TRUE([main_card_set_ configured]);
194 EXPECT_TRUE([otr_card_set_ configured]); 195 EXPECT_TRUE([otr_card_set_ configured]);
195 ValidateDisplaySetupForCardSet(main_card_set_); 196 ValidateDisplaySetupForCardSet(main_card_set_);
196 ValidateDisplaySetupForCardSet(otr_card_set_); 197 ValidateDisplaySetupForCardSet(otr_card_set_);
197 EXPECT_GT([main_card_set_ cardSize].width, 0U); 198 EXPECT_GT([main_card_set_ cardSize].width, 0U);
198 EXPECT_GT([main_card_set_ cardSize].height, 0U); 199 EXPECT_GT([main_card_set_ cardSize].height, 0U);
199 200
200 // Incognito should always be right of (or below in landscape) the main set. 201 // Incognito should always be right of (or below in landscape) the main set.
201 EXPECT_GT([otr_card_set_ layoutAxisPosition], 202 EXPECT_GT([otr_card_set_ layoutAxisPosition],
202 [main_card_set_ layoutAxisPosition]); 203 [main_card_set_ layoutAxisPosition]);
203 } 204 }
204 205
205 TEST_F(StackViewControllerTest, IncognitoHandling) { 206 TEST_F(StackViewControllerTest, IncognitoHandling) {
206 EXPECT_FALSE([view_controller_ isCurrentSetIncognito]); 207 EXPECT_FALSE([view_controller_ isCurrentSetIncognito]);
207 EXPECT_EQ((CardSet*)otr_card_set_.get(), [view_controller_ inactiveCardSet]); 208 EXPECT_EQ((CardSet*)otr_card_set_, [view_controller_ inactiveCardSet]);
sdefresne 2017/02/09 13:47:50 static_cast
lody 2017/02/09 16:00:03 Done.
208 [view_controller_ setActiveCardSet:[view_controller_ inactiveCardSet]]; 209 [view_controller_ setActiveCardSet:[view_controller_ inactiveCardSet]];
209 EXPECT_TRUE([view_controller_ isCurrentSetIncognito]); 210 EXPECT_TRUE([view_controller_ isCurrentSetIncognito]);
210 EXPECT_EQ((CardSet*)main_card_set_.get(), [view_controller_ inactiveCardSet]); 211 EXPECT_EQ((CardSet*)main_card_set_, [view_controller_ inactiveCardSet]);
sdefresne 2017/02/09 13:47:50 ditto
lody 2017/02/09 16:00:03 Done.
211 // Incognito should always be right of (or below in landscape) the main set. 212 // Incognito should always be right of (or below in landscape) the main set.
212 EXPECT_GT([otr_card_set_ layoutAxisPosition], 213 EXPECT_GT([otr_card_set_ layoutAxisPosition],
213 [main_card_set_ layoutAxisPosition]); 214 [main_card_set_ layoutAxisPosition]);
214 } 215 }
215 216
216 TEST_F(StackViewControllerTest, ScrollViewContentOffsetRecentering) { 217 TEST_F(StackViewControllerTest, ScrollViewContentOffsetRecentering) {
217 BOOL is_portrait = UIInterfaceOrientationIsPortrait( 218 BOOL is_portrait = UIInterfaceOrientationIsPortrait(
218 [UIApplication sharedApplication].statusBarOrientation); 219 [UIApplication sharedApplication].statusBarOrientation);
219 CGFloat scroll_view_breadth = 220 CGFloat scroll_view_breadth =
220 is_portrait ? [[view_controller_ scrollView] contentSize].width 221 is_portrait ? [[view_controller_ scrollView] contentSize].width
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 ValidateDisplaySetupForCardSet(otr_card_set_); 254 ValidateDisplaySetupForCardSet(otr_card_set_);
254 } 255 }
255 256
256 TEST_F(StackViewControllerTest, TabModelReset) { 257 TEST_F(StackViewControllerTest, TabModelReset) {
257 [view_controller_ setOtrTabModel:nil]; 258 [view_controller_ setOtrTabModel:nil];
258 ValidateDisplaySetupForCardSet(main_card_set_); 259 ValidateDisplaySetupForCardSet(main_card_set_);
259 ValidateDisplaySetupForCardSet(otr_card_set_); 260 ValidateDisplaySetupForCardSet(otr_card_set_);
260 } 261 }
261 262
262 } // namespace 263 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698