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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/gfx/gfx_tests.gyp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/mac/coordinate_conversion_unittest.mm
diff --git a/ui/gfx/mac/coordinate_conversion_unittest.mm b/ui/gfx/mac/coordinate_conversion_unittest.mm
new file mode 100644
index 0000000000000000000000000000000000000000..a96bb04a39a6aeee93c41c214b142e1673776347
--- /dev/null
+++ b/ui/gfx/mac/coordinate_conversion_unittest.mm
@@ -0,0 +1,107 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "ui/gfx/mac/coordinate_conversion.h"
+
+#import <Cocoa/Cocoa.h>
+
+#import "base/mac/scoped_objc_class_swizzler.h"
+#include "base/macros.h"
+#include "base/memory/scoped_ptr.h"
+#import "testing/platform_test.h"
+#include "ui/gfx/geometry/rect.h"
+
+const int kTestWidth = 320;
+const int kTestHeight = 200;
+
+// Class to donate an implementation of -[NSScreen frame] that provides a known
+// value for robust tests.
+@interface MacCoordinateConversionTestScreenDonor : NSObject
+- (NSRect)frame;
+@end
+
+@implementation MacCoordinateConversionTestScreenDonor
+- (NSRect)frame {
+ return NSMakeRect(0, 0, kTestWidth, kTestHeight);
+}
+@end
+
+namespace gfx {
+namespace {
+
+class MacCoordinateConversionTest : public PlatformTest {
+ public:
+ MacCoordinateConversionTest() {}
+
+ // Overridden from testing::Test:
+ virtual void SetUp() OVERRIDE;
+ virtual void TearDown() OVERRIDE;
+
+ private:
+ scoped_ptr<base::mac::ScopedObjCClassSwizzler> swizzle_frame_;
+
+ DISALLOW_COPY_AND_ASSIGN(MacCoordinateConversionTest);
+};
+
+void MacCoordinateConversionTest::SetUp() {
+ // Before swizzling, do a sanity check that the primary screen's origin is
+ // (0, 0). This should always be true.
+ NSRect primary_screen_frame = [[[NSScreen screens] objectAtIndex:0] frame];
+ EXPECT_EQ(0, primary_screen_frame.origin.x);
+ EXPECT_EQ(0, primary_screen_frame.origin.y);
+
+ swizzle_frame_.reset(new base::mac::ScopedObjCClassSwizzler(
+ [NSScreen class],
+ [MacCoordinateConversionTestScreenDonor class],
+ @selector(frame)));
+
+ primary_screen_frame = [[[NSScreen screens] objectAtIndex:0] frame];
+ EXPECT_EQ(kTestWidth, primary_screen_frame.size.width);
+ EXPECT_EQ(kTestHeight, primary_screen_frame.size.height);
+}
+
+void MacCoordinateConversionTest::TearDown() {
+ swizzle_frame_.reset();
+}
+
+} // namespace
+
+// Tests for coordinate conversion on Mac. Start with the following setup:
+// AppKit ....... gfx
+// 199 0
+// 189 10 Window of height 40 fills in pixel
+// 179 --------- 20 at index 20
+// 169 | | 30 through
+// ... : : .. to
+// 150 | | 49 pixel
+// 140 --------- 59 at index 59
+// 130 69 (inclusive).
+// .. ..
+// 0 199
+TEST_F(MacCoordinateConversionTest, ScreenRectToFromNSRect) {
+ Rect gfx_rect = Rect(10, 20, 30, 40);
+ NSRect ns_rect = ScreenRectToNSRect(gfx_rect);
+ EXPECT_TRUE(NSEqualRects(NSMakeRect(10, 140, 30, 40), ns_rect));
+ EXPECT_EQ(gfx_rect.ToString(), ScreenRectFromNSRect(ns_rect).ToString());
+
+ // Window in a screen to the left of the primary screen.
+ gfx_rect = Rect(-40, 20, 30, 40);
+ ns_rect = ScreenRectToNSRect(gfx_rect);
+ EXPECT_TRUE(NSEqualRects(NSMakeRect(-40, 140, 30, 40), ns_rect));
+ EXPECT_EQ(gfx_rect.ToString(), ScreenRectFromNSRect(ns_rect).ToString());
+
+ // Window in a screen below the primary screen.
+ gfx_rect = Rect(10, 220, 30, 40);
+ ns_rect = ScreenRectToNSRect(gfx_rect);
+ EXPECT_TRUE(NSEqualRects(NSMakeRect(10, -60, 30, 40), ns_rect));
+ EXPECT_EQ(gfx_rect.ToString(), ScreenRectFromNSRect(ns_rect).ToString());
+
+ // Window in a screen below and to the left primary screen.
+ gfx_rect = Rect(-40, 220, 30, 40);
+ ns_rect = ScreenRectToNSRect(gfx_rect);
+ EXPECT_TRUE(NSEqualRects(NSMakeRect(-40, -60, 30, 40), ns_rect));
+ EXPECT_EQ(gfx_rect.ToString(), ScreenRectFromNSRect(ns_rect).ToString());
+}
+
+} // namespace gfx
« 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