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

Side by Side Diff: ios/chrome/browser/ui/uikit_ui_util_unittest.mm

Issue 802633007: Upstream iOS UI utilities. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove rand() Created 5 years, 11 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/uikit_ui_util.mm ('k') | ios/chrome/ios_chrome.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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.
4
5 #import "ios/chrome/browser/ui/uikit_ui_util.h"
6
7 #include "base/basictypes.h"
8 #include "base/ios/ios_util.h"
9 #include "base/mac/scoped_nsobject.h"
10 #include "base/strings/sys_string_conversions.h"
11 #import "ios/chrome/browser/ui/ui_util.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #import "third_party/ocmock/OCMock/OCMock.h"
14
15 namespace {
16
17 void ExpectInterpolatedColor(UIColor* firstColor,
18 UIColor* secondColor,
19 CGFloat percentage,
20 CGFloat expectedValue) {
21 UIColor* interpolatedColor =
22 InterpolateFromColorToColor(firstColor, secondColor, percentage);
23 CGFloat r, g, b, a;
24 [interpolatedColor getRed:&r green:&g blue:&b alpha:&a];
25 EXPECT_FLOAT_EQ(expectedValue, r);
26 EXPECT_FLOAT_EQ(expectedValue, g);
27 EXPECT_FLOAT_EQ(expectedValue, b);
28 EXPECT_FLOAT_EQ(1.0, a);
29 }
30
31 // Verify the assumption about UIViewController that on iPad all orientations
32 // are supported, and all orientations but Portrait Upside-Down on iPhone and
33 // iPod Touch.
34 TEST(UIKitUIUtilTest, UIViewControllerSupportedOrientationsTest) {
35 base::scoped_nsobject<UIViewController> viewController(
36 [[UIViewController alloc] initWithNibName:nil bundle:nil]);
37 if (IsIPadIdiom()) {
38 EXPECT_EQ(UIInterfaceOrientationMaskAll,
39 [viewController supportedInterfaceOrientations]);
40 } else {
41 EXPECT_EQ(UIInterfaceOrientationMaskAllButUpsideDown,
42 [viewController supportedInterfaceOrientations]);
43 }
44 }
45
46 TEST(UIKitUIUtilTest, TestGetUiFont) {
47 EXPECT_TRUE(GetUIFont(FONT_HELVETICA, false, 15.0));
48 EXPECT_TRUE(GetUIFont(FONT_HELVETICA_NEUE, true, 15.0));
49 }
50
51 // Verifies that greyImage never returns retina-scale images.
52 TEST(UIKitUIUtilTest, TestGreyImage) {
53 // Create an image using the device's scale factor.
54 const CGSize kSize = CGSizeMake(100, 100);
55 UIGraphicsBeginImageContextWithOptions(kSize, NO, 0.0);
56 UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
57 UIGraphicsEndImageContext();
58
59 // Verify the grey image's size and scale.
60 UIImage* greyImage = GreyImage(image);
61 EXPECT_EQ(kSize.width, greyImage.size.width);
62 EXPECT_EQ(kSize.height, greyImage.size.height);
63 EXPECT_EQ(1.0, greyImage.scale);
64 }
65
66 // Returns an image of random color in the same scale as the device main
67 // screen.
68 UIImage* testImage(CGSize imageSize) {
69 UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
70 CGContextRef context = UIGraphicsGetCurrentContext();
71 CGContextSetRGBStrokeColor(context, 0, 0, 0, 1.0);
72 CGContextSetRGBFillColor(context, 0, 0, 0, 1.0);
73 CGContextFillRect(context,
74 CGRectMake(0.0, 0.0, imageSize.width, imageSize.height));
75 UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
76 UIGraphicsEndImageContext();
77 return image;
78 }
79
80 TEST(UIKitUIUtilTest, TestResizeImageInvalidInput) {
81 UIImage* actual;
82 UIImage* image = testImage(CGSizeMake(100, 50));
83 actual = ResizeImage(image, CGSizeZero,
84 YES, // preserveAspectRatio
85 NO); // trimToFit
86 EXPECT_FALSE(actual);
87
88 actual = ResizeImage(image, CGSizeMake(0.1, 0.1),
89 YES, // preserveAspectRatio
90 NO); // trimToFit
91 EXPECT_FALSE(actual);
92
93 actual = ResizeImage(image, CGSizeMake(-100, -100),
94 YES, // preserveAspectRatio
95 NO); // trimToFit
96 EXPECT_FALSE(actual);
97 }
98
99 TEST(UIKitUIUtilTest, TestInterpolateFromColorToColor) {
100 CGFloat colorOne = 50.0f / 255.0f;
101 CGFloat colorTwo = 100.0f / 255.0f;
102 CGFloat expectedOne = 50.0f / 255.0f;
103 CGFloat expectedTwo = 55.0f / 255.0f;
104 CGFloat expectedThree = 75.0f / 255.0f;
105 CGFloat expectedFour = 100.0f / 255.0f;
106
107 UIColor* firstColor =
108 [UIColor colorWithRed:colorOne green:colorOne blue:colorOne alpha:1.0];
109 UIColor* secondColor =
110 [UIColor colorWithRed:colorTwo green:colorTwo blue:colorTwo alpha:1.0];
111 ExpectInterpolatedColor(firstColor, secondColor, 0.0f, expectedOne);
112 ExpectInterpolatedColor(firstColor, secondColor, 0.1f, expectedTwo);
113 ExpectInterpolatedColor(firstColor, secondColor, 0.5f, expectedThree);
114 ExpectInterpolatedColor(firstColor, secondColor, 1.0f, expectedFour);
115 }
116
117 // Tests that InterpolateFromColorToColor() works for monochrome colors.
118 TEST(UIKitUIUtilTest, TestInterpolateFromColorToColorMonochrome) {
119 CGFloat kRGBComponent = 0.2;
120 UIColor* rgb = [UIColor colorWithRed:kRGBComponent
121 green:kRGBComponent
122 blue:kRGBComponent
123 alpha:1.0];
124 ASSERT_EQ(kCGColorSpaceModelRGB,
125 CGColorSpaceGetModel(CGColorGetColorSpace(rgb.CGColor)));
126
127 UIColor* white = [UIColor whiteColor];
128 ASSERT_EQ(kCGColorSpaceModelMonochrome,
129 CGColorSpaceGetModel(CGColorGetColorSpace(white.CGColor)));
130
131 UIColor* black = [UIColor blackColor];
132 ASSERT_EQ(kCGColorSpaceModelMonochrome,
133 CGColorSpaceGetModel(CGColorGetColorSpace(black.CGColor)));
134
135 // Interpolate between monochrome and rgb.
136 ExpectInterpolatedColor(black, rgb, 0.5, 0.1);
137 // Interpolate between two monochrome colors.
138 ExpectInterpolatedColor(black, white, 0.3, 0.3);
139 }
140
141 } // namespace
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/uikit_ui_util.mm ('k') | ios/chrome/ios_chrome.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698