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

Side by Side Diff: ios/chrome/browser/ui/stack_view/stack_card_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 #include "base/mac/scoped_nsobject.h"
6 #import "ios/chrome/browser/ui/rtl_geometry.h" 5 #import "ios/chrome/browser/ui/rtl_geometry.h"
7 #import "ios/chrome/browser/ui/stack_view/card_view.h" 6 #import "ios/chrome/browser/ui/stack_view/card_view.h"
8 #import "ios/chrome/browser/ui/stack_view/stack_card.h" 7 #import "ios/chrome/browser/ui/stack_view/stack_card.h"
9 #import "ios/chrome/browser/ui/ui_util.h" 8 #import "ios/chrome/browser/ui/ui_util.h"
10 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
11 #include "testing/gtest_mac.h" 10 #include "testing/gtest_mac.h"
12 #include "testing/platform_test.h" 11 #include "testing/platform_test.h"
13 12
13 #if !defined(__has_feature) || !__has_feature(objc_arc)
14 #error "This file requires ARC support."
15 #endif
16
14 // Mocked-out CardView object 17 // Mocked-out CardView object
15 @interface MockCardView : UIView 18 @interface MockCardView : UIView
16 @end 19 @end
17 20
18 @implementation MockCardView 21 @implementation MockCardView
19 - (void)setIsActiveTab:(BOOL)isActiveTab { 22 - (void)setIsActiveTab:(BOOL)isActiveTab {
20 } 23 }
21 @end 24 @end
22 25
23 // Returns mocked-out CardView objects for every request. 26 // Returns mocked-out CardView objects for every request.
24 @interface MockCardViewProvider : NSObject<StackCardViewProvider> 27 @interface MockCardViewProvider : NSObject<StackCardViewProvider>
25 @end 28 @end
26 29
27 @implementation MockCardViewProvider 30 @implementation MockCardViewProvider
28 - (CardView*)cardViewWithFrame:(CGRect)frame forStackCard:(StackCard*)card { 31 - (CardView*)cardViewWithFrame:(CGRect)frame forStackCard:(StackCard*)card {
29 return (CardView*)[[[MockCardView alloc] initWithFrame:frame] autorelease]; 32 return (CardView*)[[MockCardView alloc] initWithFrame:frame];
sdefresne 2017/02/09 13:47:49 static_cast
lody 2017/02/09 16:00:03 Done.
30 } 33 }
31 @end 34 @end
32 35
33 #pragma mark - 36 #pragma mark -
34 37
35 namespace { 38 namespace {
36 39
37 class StackCardTest : public PlatformTest { 40 class StackCardTest : public PlatformTest {
38 protected: 41 protected:
39 void SetUp() override { 42 void SetUp() override {
40 view_provider_.reset([[MockCardViewProvider alloc] init]); 43 view_provider_ = [[MockCardViewProvider alloc] init];
41 } 44 }
42 45
sdefresne 2017/02/09 13:47:49 PlatformTest drain it's autoreleasepool in ShutDow
lody 2017/02/09 16:00:03 Done.
43 base::scoped_nsobject<MockCardViewProvider> view_provider_; 46 MockCardViewProvider* view_provider_;
44 }; 47 };
45 48
46 TEST_F(StackCardTest, LazyCreation) { 49 TEST_F(StackCardTest, LazyCreation) {
47 base::scoped_nsobject<StackCard> card( 50 StackCard* card = [[StackCard alloc] initWithViewProvider:view_provider_];
48 [[StackCard alloc] initWithViewProvider:view_provider_]);
49 // Set attributes before asking for the view. 51 // Set attributes before asking for the view.
50 LayoutRect layout = LayoutRectMake(10, 300, 20, 55, 98); 52 LayoutRect layout = LayoutRectMake(10, 300, 20, 55, 98);
51 CGRect frame = LayoutRectGetRect(layout); 53 CGRect frame = LayoutRectGetRect(layout);
52 [card setLayout:layout]; 54 [card setLayout:layout];
53 // Ensure the view hasn't been created yet. 55 // Ensure the view hasn't been created yet.
54 EXPECT_FALSE([card viewIsLive]); 56 EXPECT_FALSE([card viewIsLive]);
55 // Make sure that the view actually has those attributes. 57 // Make sure that the view actually has those attributes.
56 UIView* view = [card view]; 58 UIView* view = [card view];
57 EXPECT_FLOAT_EQ(frame.size.width, view.frame.size.width); 59 EXPECT_FLOAT_EQ(frame.size.width, view.frame.size.width);
58 EXPECT_FLOAT_EQ(frame.size.height, view.frame.size.height); 60 EXPECT_FLOAT_EQ(frame.size.height, view.frame.size.height);
59 EXPECT_FLOAT_EQ(frame.origin.x, view.frame.origin.x); 61 EXPECT_FLOAT_EQ(frame.origin.x, view.frame.origin.x);
60 EXPECT_FLOAT_EQ(frame.origin.y, view.frame.origin.y); 62 EXPECT_FLOAT_EQ(frame.origin.y, view.frame.origin.y);
61 } 63 }
62 64
63 TEST_F(StackCardTest, LiveViewUpdating) { 65 TEST_F(StackCardTest, LiveViewUpdating) {
64 base::scoped_nsobject<StackCard> card( 66 StackCard* card = [[StackCard alloc] initWithViewProvider:view_provider_];
65 [[StackCard alloc] initWithViewProvider:view_provider_]);
66 // Get the view, then set attributes. 67 // Get the view, then set attributes.
67 UIView* view = [card view]; 68 UIView* view = [card view];
68 LayoutRect layout = LayoutRectMake(10, 300, 20, 55, 98); 69 LayoutRect layout = LayoutRectMake(10, 300, 20, 55, 98);
69 CGRect frame = LayoutRectGetRect(layout); 70 CGRect frame = LayoutRectGetRect(layout);
70 [card setLayout:layout]; 71 [card setLayout:layout];
71 // Make sure that the view actually has those attributes. 72 // Make sure that the view actually has those attributes.
72 EXPECT_FLOAT_EQ(frame.size.width, view.frame.size.width); 73 EXPECT_FLOAT_EQ(frame.size.width, view.frame.size.width);
73 EXPECT_FLOAT_EQ(frame.size.height, view.frame.size.height); 74 EXPECT_FLOAT_EQ(frame.size.height, view.frame.size.height);
74 EXPECT_FLOAT_EQ(frame.origin.x, view.frame.origin.x); 75 EXPECT_FLOAT_EQ(frame.origin.x, view.frame.origin.x);
75 EXPECT_FLOAT_EQ(frame.origin.y, view.frame.origin.y); 76 EXPECT_FLOAT_EQ(frame.origin.y, view.frame.origin.y);
76 } 77 }
77 78
78 TEST_F(StackCardTest, BoundsUpdatePreservesCenter) { 79 TEST_F(StackCardTest, BoundsUpdatePreservesCenter) {
79 base::scoped_nsobject<StackCard> card( 80 StackCard* card = [[StackCard alloc] initWithViewProvider:view_provider_];
80 [[StackCard alloc] initWithViewProvider:view_provider_]);
81 LayoutRect layout = LayoutRectMake(0, 300, 0, 40, 100); 81 LayoutRect layout = LayoutRectMake(0, 300, 0, 40, 100);
82 CGRect frame = LayoutRectGetRect(layout); 82 CGRect frame = LayoutRectGetRect(layout);
83 [card setLayout:layout]; 83 [card setLayout:layout];
84 // Changing the bounds should preserve the center (as with UIView). 84 // Changing the bounds should preserve the center (as with UIView).
85 [card setSize:CGSizeMake(10, 10)]; 85 [card setSize:CGSizeMake(10, 10)];
86 CGRect newFrame = LayoutRectGetRect([card layout]); 86 CGRect newFrame = LayoutRectGetRect([card layout]);
87 EXPECT_FLOAT_EQ(CGRectGetMidX(frame), CGRectGetMidX(newFrame)); 87 EXPECT_FLOAT_EQ(CGRectGetMidX(frame), CGRectGetMidX(newFrame));
88 EXPECT_FLOAT_EQ(CGRectGetMidY(frame), CGRectGetMidY(newFrame)); 88 EXPECT_FLOAT_EQ(CGRectGetMidY(frame), CGRectGetMidY(newFrame));
89 } 89 }
90 90
91 TEST_F(StackCardTest, PixelAlignmentOfViewFrameAfterLiveUpdate) { 91 TEST_F(StackCardTest, PixelAlignmentOfViewFrameAfterLiveUpdate) {
92 base::scoped_nsobject<StackCard> card( 92 StackCard* card = [[StackCard alloc] initWithViewProvider:view_provider_];
93 [[StackCard alloc] initWithViewProvider:view_provider_]);
94 // Get the view, then set attributes. 93 // Get the view, then set attributes.
95 UIView* view = [card view]; 94 UIView* view = [card view];
96 const LayoutRectPosition kPosition = LayoutRectPositionMake(10.3, 20.4); 95 const LayoutRectPosition kPosition = LayoutRectPositionMake(10.3, 20.4);
97 const CGSize kSize = CGSizeMake(55, 98); 96 const CGSize kSize = CGSizeMake(55, 98);
98 const CGFloat kBoundingWidth = 300; 97 const CGFloat kBoundingWidth = 300;
99 const LayoutRect kLayout = 98 const LayoutRect kLayout =
100 LayoutRectMake(kPosition.leading, kBoundingWidth, kPosition.originY, 99 LayoutRectMake(kPosition.leading, kBoundingWidth, kPosition.originY,
101 kSize.width, kSize.height); 100 kSize.width, kSize.height);
102 [card setLayout:kLayout]; 101 [card setLayout:kLayout];
103 EXPECT_FLOAT_EQ(kSize.width, view.frame.size.width); 102 EXPECT_FLOAT_EQ(kSize.width, view.frame.size.width);
104 EXPECT_FLOAT_EQ(kSize.height, view.frame.size.height); 103 EXPECT_FLOAT_EQ(kSize.height, view.frame.size.height);
105 EXPECT_FLOAT_EQ(kPosition.leading, [card layout].position.leading); 104 EXPECT_FLOAT_EQ(kPosition.leading, [card layout].position.leading);
106 EXPECT_FLOAT_EQ(kPosition.originY, [card layout].position.originY); 105 EXPECT_FLOAT_EQ(kPosition.originY, [card layout].position.originY);
107 // The view's origin should be pixel-aligned. 106 // The view's origin should be pixel-aligned.
108 const CGPoint kPixelAlignedOrigin = 107 const CGPoint kPixelAlignedOrigin =
109 AlignRectOriginAndSizeToPixels(LayoutRectGetRect(kLayout)).origin; 108 AlignRectOriginAndSizeToPixels(LayoutRectGetRect(kLayout)).origin;
110 EXPECT_FLOAT_EQ(kPixelAlignedOrigin.x, view.frame.origin.x); 109 EXPECT_FLOAT_EQ(kPixelAlignedOrigin.x, view.frame.origin.x);
111 EXPECT_FLOAT_EQ(kPixelAlignedOrigin.y, view.frame.origin.y); 110 EXPECT_FLOAT_EQ(kPixelAlignedOrigin.y, view.frame.origin.y);
112 } 111 }
113 112
114 TEST_F(StackCardTest, ViewFrameSynchronization) { 113 TEST_F(StackCardTest, ViewFrameSynchronization) {
115 base::scoped_nsobject<StackCard> card( 114 StackCard* card = [[StackCard alloc] initWithViewProvider:view_provider_];
116 [[StackCard alloc] initWithViewProvider:view_provider_]);
117 // Get the view, then set attributes. 115 // Get the view, then set attributes.
118 UIView* view = [card view]; 116 UIView* view = [card view];
119 const LayoutRect kFirstLayout = LayoutRectMake(10, 300, 20, 55, 98); 117 const LayoutRect kFirstLayout = LayoutRectMake(10, 300, 20, 55, 98);
120 CGRect firstFrame = LayoutRectGetRect(kFirstLayout); 118 CGRect firstFrame = LayoutRectGetRect(kFirstLayout);
121 [card setLayout:kFirstLayout]; 119 [card setLayout:kFirstLayout];
122 // Make sure that the view actually has those attributes. 120 // Make sure that the view actually has those attributes.
123 EXPECT_FLOAT_EQ(firstFrame.size.width, view.frame.size.width); 121 EXPECT_FLOAT_EQ(firstFrame.size.width, view.frame.size.width);
124 EXPECT_FLOAT_EQ(firstFrame.size.height, view.frame.size.height); 122 EXPECT_FLOAT_EQ(firstFrame.size.height, view.frame.size.height);
125 EXPECT_FLOAT_EQ(firstFrame.origin.x, view.frame.origin.x); 123 EXPECT_FLOAT_EQ(firstFrame.origin.x, view.frame.origin.x);
126 EXPECT_FLOAT_EQ(firstFrame.origin.y, view.frame.origin.y); 124 EXPECT_FLOAT_EQ(firstFrame.origin.y, view.frame.origin.y);
(...skipping 14 matching lines...) Expand all
141 EXPECT_FLOAT_EQ(firstFrame.origin.y, view.frame.origin.y); 139 EXPECT_FLOAT_EQ(firstFrame.origin.y, view.frame.origin.y);
142 [card setSynchronizeView:YES]; 140 [card setSynchronizeView:YES];
143 // View should immediately pick up the new attributes. 141 // View should immediately pick up the new attributes.
144 EXPECT_FLOAT_EQ(secondFrame.size.width, view.frame.size.width); 142 EXPECT_FLOAT_EQ(secondFrame.size.width, view.frame.size.width);
145 EXPECT_FLOAT_EQ(secondFrame.size.height, view.frame.size.height); 143 EXPECT_FLOAT_EQ(secondFrame.size.height, view.frame.size.height);
146 EXPECT_FLOAT_EQ(secondFrame.origin.x, view.frame.origin.x); 144 EXPECT_FLOAT_EQ(secondFrame.origin.x, view.frame.origin.x);
147 EXPECT_FLOAT_EQ(secondFrame.origin.y, view.frame.origin.y); 145 EXPECT_FLOAT_EQ(secondFrame.origin.y, view.frame.origin.y);
148 } 146 }
149 147
150 TEST_F(StackCardTest, ViewLayoutSynchronization) { 148 TEST_F(StackCardTest, ViewLayoutSynchronization) {
151 base::scoped_nsobject<StackCard> card( 149 StackCard* card = [[StackCard alloc] initWithViewProvider:view_provider_];
152 [[StackCard alloc] initWithViewProvider:view_provider_]);
153 // Get the view, then set attributes. 150 // Get the view, then set attributes.
154 UIView* view = [card view]; 151 UIView* view = [card view];
155 const LayoutRect kFirstLayout = LayoutRectMake(30, 300, 40, 200, 100); 152 const LayoutRect kFirstLayout = LayoutRectMake(30, 300, 40, 200, 100);
156 const CGRect kFirstFrame = LayoutRectGetRect(kFirstLayout); 153 const CGRect kFirstFrame = LayoutRectGetRect(kFirstLayout);
157 [card setLayout:kFirstLayout]; 154 [card setLayout:kFirstLayout];
158 // Make sure that the view actually has those attributes. 155 // Make sure that the view actually has those attributes.
159 EXPECT_FLOAT_EQ(kFirstFrame.size.width, view.bounds.size.width); 156 EXPECT_FLOAT_EQ(kFirstFrame.size.width, view.bounds.size.width);
160 EXPECT_FLOAT_EQ(kFirstFrame.size.height, view.bounds.size.height); 157 EXPECT_FLOAT_EQ(kFirstFrame.size.height, view.bounds.size.height);
161 EXPECT_FLOAT_EQ(CGRectGetMidX(kFirstFrame), view.center.x); 158 EXPECT_FLOAT_EQ(CGRectGetMidX(kFirstFrame), view.center.x);
162 EXPECT_FLOAT_EQ(CGRectGetMidY(kFirstFrame), view.center.y); 159 EXPECT_FLOAT_EQ(CGRectGetMidY(kFirstFrame), view.center.y);
(...skipping 15 matching lines...) Expand all
178 EXPECT_FLOAT_EQ(CGRectGetMidY(kFirstFrame), view.center.y); 175 EXPECT_FLOAT_EQ(CGRectGetMidY(kFirstFrame), view.center.y);
179 [card setSynchronizeView:YES]; 176 [card setSynchronizeView:YES];
180 // View should immediately pick up the new attributes. 177 // View should immediately pick up the new attributes.
181 EXPECT_FLOAT_EQ(kSecondFrame.size.width, view.bounds.size.width); 178 EXPECT_FLOAT_EQ(kSecondFrame.size.width, view.bounds.size.width);
182 EXPECT_FLOAT_EQ(kSecondFrame.size.height, view.bounds.size.height); 179 EXPECT_FLOAT_EQ(kSecondFrame.size.height, view.bounds.size.height);
183 EXPECT_FLOAT_EQ(CGRectGetMidX(kSecondFrame), view.center.x); 180 EXPECT_FLOAT_EQ(CGRectGetMidX(kSecondFrame), view.center.x);
184 EXPECT_FLOAT_EQ(CGRectGetMidY(kSecondFrame), view.center.y); 181 EXPECT_FLOAT_EQ(CGRectGetMidY(kSecondFrame), view.center.y);
185 } 182 }
186 183
187 TEST_F(StackCardTest, PixelAlignmentOfViewAfterSynchronization) { 184 TEST_F(StackCardTest, PixelAlignmentOfViewAfterSynchronization) {
188 base::scoped_nsobject<StackCard> card( 185 StackCard* card = [[StackCard alloc] initWithViewProvider:view_provider_];
189 [[StackCard alloc] initWithViewProvider:view_provider_]);
190 // Get the view, then set attributes. 186 // Get the view, then set attributes.
191 UIView* view = [card view]; 187 UIView* view = [card view];
192 const CGFloat kBoundingWidth = 300; 188 const CGFloat kBoundingWidth = 300;
193 const LayoutRect kFirstLayout = 189 const LayoutRect kFirstLayout =
194 LayoutRectMake(10, kBoundingWidth, 20, 55, 98); 190 LayoutRectMake(10, kBoundingWidth, 20, 55, 98);
195 const CGRect kFirstFrame = LayoutRectGetRect(kFirstLayout); 191 const CGRect kFirstFrame = LayoutRectGetRect(kFirstLayout);
196 [card setLayout:kFirstLayout]; 192 [card setLayout:kFirstLayout];
197 // Make sure that the view actually has those attributes. 193 // Make sure that the view actually has those attributes.
198 EXPECT_FLOAT_EQ(kFirstFrame.size.width, view.frame.size.width); 194 EXPECT_FLOAT_EQ(kFirstFrame.size.width, view.frame.size.width);
199 EXPECT_FLOAT_EQ(kFirstFrame.size.height, view.frame.size.height); 195 EXPECT_FLOAT_EQ(kFirstFrame.size.height, view.frame.size.height);
(...skipping 22 matching lines...) Expand all
222 // correctly pixel-aligned. 218 // correctly pixel-aligned.
223 EXPECT_FLOAT_EQ(kSecondFrame.size.width, view.frame.size.width); 219 EXPECT_FLOAT_EQ(kSecondFrame.size.width, view.frame.size.width);
224 EXPECT_FLOAT_EQ(kSecondFrame.size.height, view.frame.size.height); 220 EXPECT_FLOAT_EQ(kSecondFrame.size.height, view.frame.size.height);
225 const CGPoint kPixelAlignedOrigin = 221 const CGPoint kPixelAlignedOrigin =
226 AlignRectOriginAndSizeToPixels(LayoutRectGetRect(kSecondLayout)).origin; 222 AlignRectOriginAndSizeToPixels(LayoutRectGetRect(kSecondLayout)).origin;
227 EXPECT_FLOAT_EQ(kPixelAlignedOrigin.x, view.frame.origin.x); 223 EXPECT_FLOAT_EQ(kPixelAlignedOrigin.x, view.frame.origin.x);
228 EXPECT_FLOAT_EQ(kPixelAlignedOrigin.y, view.frame.origin.y); 224 EXPECT_FLOAT_EQ(kPixelAlignedOrigin.y, view.frame.origin.y);
229 } 225 }
230 226
231 } // namespace 227 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698