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

Side by Side Diff: ui/gfx/mac/coordinate_conversion_unittest.mm

Issue 411833003: Add tests for gfx::ScreenRectTo/FromNSRect. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: gix gn Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « ui/gfx/gfx_tests.gyp ('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
(Empty)
1 // Copyright 2014 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 "ui/gfx/mac/coordinate_conversion.h"
6
7 #import <Cocoa/Cocoa.h>
8
9 #import "base/mac/scoped_objc_class_swizzler.h"
10 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h"
12 #import "testing/platform_test.h"
13 #include "ui/gfx/geometry/rect.h"
14
15 const int kTestWidth = 320;
16 const int kTestHeight = 200;
17
18 // Class to donate an implementation of -[NSScreen frame] that provides a known
19 // value for robust tests.
20 @interface MacCoordinateConversionTestScreenDonor : NSObject
21 - (NSRect)frame;
22 @end
23
24 @implementation MacCoordinateConversionTestScreenDonor
25 - (NSRect)frame {
26 return NSMakeRect(0, 0, kTestWidth, kTestHeight);
27 }
28 @end
29
30 namespace gfx {
31 namespace {
32
33 class MacCoordinateConversionTest : public PlatformTest {
34 public:
35 MacCoordinateConversionTest() {}
36
37 // Overridden from testing::Test:
38 virtual void SetUp() OVERRIDE;
39 virtual void TearDown() OVERRIDE;
40
41 private:
42 scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzle_frame_;
43
44 DISALLOW_COPY_AND_ASSIGN(MacCoordinateConversionTest);
45 };
46
47 void MacCoordinateConversionTest::SetUp() {
48 // Before swizzling, do a sanity check that the primary screen's origin is
49 // (0, 0). This should always be true.
50 NSRect primary_screen_frame = [[[NSScreen screens] objectAtIndex:0] frame];
51 EXPECT_EQ(0, primary_screen_frame.origin.x);
52 EXPECT_EQ(0, primary_screen_frame.origin.y);
53
54 swizzle_frame_.reset(new base::mac::ScopedObjCClassSwizzler(
55 [NSScreen class],
56 [MacCoordinateConversionTestScreenDonor class],
57 @selector(frame)));
58
59 primary_screen_frame = [[[NSScreen screens] objectAtIndex:0] frame];
60 EXPECT_EQ(kTestWidth, primary_screen_frame.size.width);
61 EXPECT_EQ(kTestHeight, primary_screen_frame.size.height);
62 }
63
64 void MacCoordinateConversionTest::TearDown() {
65 swizzle_frame_.reset();
66 }
67
68 } // namespace
69
70 // Tests for coordinate conversion on Mac. Start with the following setup:
71 // AppKit ....... gfx
72 // 199 0
73 // 189 10 Window of height 40 fills in pixel
74 // 179 --------- 20 at index 20
75 // 169 | | 30 through
76 // ... : : .. to
77 // 150 | | 49 pixel
78 // 140 --------- 59 at index 59
79 // 130 69 (inclusive).
80 // .. ..
81 // 0 199
82 TEST_F(MacCoordinateConversionTest, ScreenRectToFromNSRect) {
83 Rect gfx_rect = Rect(10, 20, 30, 40);
84 NSRect ns_rect = ScreenRectToNSRect(gfx_rect);
85 EXPECT_TRUE(NSEqualRects(NSMakeRect(10, 140, 30, 40), ns_rect));
86 EXPECT_EQ(gfx_rect.ToString(), ScreenRectFromNSRect(ns_rect).ToString());
87
88 // Window in a screen to the left of the primary screen.
89 gfx_rect = Rect(-40, 20, 30, 40);
90 ns_rect = ScreenRectToNSRect(gfx_rect);
91 EXPECT_TRUE(NSEqualRects(NSMakeRect(-40, 140, 30, 40), ns_rect));
92 EXPECT_EQ(gfx_rect.ToString(), ScreenRectFromNSRect(ns_rect).ToString());
93
94 // Window in a screen below the primary screen.
95 gfx_rect = Rect(10, 220, 30, 40);
96 ns_rect = ScreenRectToNSRect(gfx_rect);
97 EXPECT_TRUE(NSEqualRects(NSMakeRect(10, -60, 30, 40), ns_rect));
98 EXPECT_EQ(gfx_rect.ToString(), ScreenRectFromNSRect(ns_rect).ToString());
99
100 // Window in a screen below and to the left primary screen.
101 gfx_rect = Rect(-40, 220, 30, 40);
102 ns_rect = ScreenRectToNSRect(gfx_rect);
103 EXPECT_TRUE(NSEqualRects(NSMakeRect(-40, -60, 30, 40), ns_rect));
104 EXPECT_EQ(gfx_rect.ToString(), ScreenRectFromNSRect(ns_rect).ToString());
105 }
106
107 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/gfx_tests.gyp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698