Index: ash/magnifier/magnification_controller_unittest.cc |
diff --git a/ash/magnifier/magnification_controller_unittest.cc b/ash/magnifier/magnification_controller_unittest.cc |
index 2060df4c738f8c1f2efca0e0be4b8b7538219caa..d489218597f82f36a18ec5ab36686b1b77a855fb 100644 |
--- a/ash/magnifier/magnification_controller_unittest.cc |
+++ b/ash/magnifier/magnification_controller_unittest.cc |
@@ -8,7 +8,9 @@ |
#include "ash/test/ash_test_base.h" |
#include "base/stringprintf.h" |
#include "ui/aura/client/aura_constants.h" |
+#include "ui/aura/env.h" |
#include "ui/aura/root_window.h" |
+#include "ui/aura/test/event_generator.h" |
#include "ui/gfx/rect_conversions.h" |
#include "ui/gfx/screen.h" |
@@ -19,6 +21,8 @@ namespace { |
const int kRootHeight = 600; |
const int kRootWidth = 800; |
+const float kMagnificationFactor = 1.18920712f; |
oshima
2013/04/24 20:36:04
The significand of a floating value only has 7 dig
yoshiki
2013/04/24 23:30:23
This was the same value used in magnifier. I move
|
+ |
} // namespace |
class MagnificationControllerTest: public test::AshTestBase { |
@@ -50,6 +54,18 @@ class MagnificationControllerTest: public test::AshTestBase { |
return Shell::GetPrimaryRootWindow(); |
} |
+ |
+ void MoveCursorWithEvent(gfx::Point point) { |
oshima
2013/04/24 20:36:04
const gfx::Point& point
yoshiki
2013/04/24 23:30:23
Done.
|
+ aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); |
+ generator.MoveMouseTo(point.x(), point.y()); |
+ } |
+ |
+ std::string GetHostMouseLocation() { |
+ gfx::Point point; |
+ GetRootWindow()->QueryMouseLocationForTest(&point); |
+ return point.ToString(); |
+ } |
+ |
ash::MagnificationController* GetMagnificationController() { |
return ash::Shell::GetInstance()->magnification_controller(); |
} |
@@ -60,6 +76,11 @@ class MagnificationControllerTest: public test::AshTestBase { |
return gfx::ToEnclosingRect(bounds); |
} |
+ std::string CurrentPointOfInterest() { |
+ return GetMagnificationController()-> |
+ GetPointOfInterestForTesting().ToString(); |
+ } |
+ |
private: |
DISALLOW_COPY_AND_ASSIGN(MagnificationControllerTest); |
}; |
@@ -95,19 +116,23 @@ TEST_F(MagnificationControllerTest, MagnifyAndUnmagnify) { |
EXPECT_FALSE(GetRootWindow()->layer()->transform().IsIdentity()); |
EXPECT_EQ(2.0f, GetMagnificationController()->GetScale()); |
EXPECT_EQ("200,150 400x300", GetViewport().ToString()); |
+ EXPECT_EQ("400,300", CurrentPointOfInterest()); |
// Changes the scale. |
GetMagnificationController()->SetScale(4.0f, false); |
EXPECT_EQ(4.0f, GetMagnificationController()->GetScale()); |
EXPECT_EQ("300,225 200x150", GetViewport().ToString()); |
+ EXPECT_EQ("400,300", CurrentPointOfInterest()); |
GetMagnificationController()->SetScale(1.0f, false); |
EXPECT_EQ(1.0f, GetMagnificationController()->GetScale()); |
EXPECT_EQ("0,0 800x600", GetViewport().ToString()); |
+ EXPECT_EQ("400,300", CurrentPointOfInterest()); |
GetMagnificationController()->SetScale(3.0f, false); |
EXPECT_EQ(3.0f, GetMagnificationController()->GetScale()); |
EXPECT_EQ("266,200 268x200", GetViewport().ToString()); |
+ EXPECT_EQ("400,300", CurrentPointOfInterest()); |
} |
TEST_F(MagnificationControllerTest, MoveWindow) { |
@@ -153,5 +178,267 @@ TEST_F(MagnificationControllerTest, MoveWindow) { |
EXPECT_EQ("400,300 400x300", GetViewport().ToString()); |
} |
+TEST_F(MagnificationControllerTest, PointOfInterest) { |
+ MoveCursorWithEvent(gfx::Point(0, 0)); |
+ EXPECT_EQ("0,0", CurrentPointOfInterest()); |
+ |
+ MoveCursorWithEvent(gfx::Point(799, 599)); |
+ EXPECT_EQ("799,599", CurrentPointOfInterest()); |
+ |
+ MoveCursorWithEvent(gfx::Point(400, 300)); |
+ EXPECT_EQ("400,300", CurrentPointOfInterest()); |
+ |
+ GetMagnificationController()->SetEnabled(true); |
+ EXPECT_EQ("400,300", CurrentPointOfInterest()); |
+ |
+ MoveCursorWithEvent(gfx::Point(500, 400)); |
+ EXPECT_EQ("450,350", CurrentPointOfInterest()); |
+} |
+ |
+TEST_F(MagnificationControllerTest, PanWindow2xLeftToRight) { |
+ aura::Env* env = aura::Env::GetInstance(); |
oshima
2013/04/24 20:36:04
const
same for other places
yoshiki
2013/04/24 23:30:23
Done.
|
+ |
+ MoveCursorWithEvent(gfx::Point(0, 0)); |
+ EXPECT_EQ(1.f, GetMagnificationController()->GetScale()); |
+ EXPECT_EQ("0,0 800x600", GetViewport().ToString()); |
+ EXPECT_EQ("0,0", env->last_mouse_location().ToString()); |
+ |
+ // Enables magnifier and confirm the viewport is at center. |
+ GetMagnificationController()->SetEnabled(true); |
+ EXPECT_EQ(2.0f, GetMagnificationController()->GetScale()); |
+ |
+ GetMagnificationController()->MoveWindow(0, 0, false); |
+ MoveCursorWithEvent(gfx::Point(0, 0)); |
+ EXPECT_EQ("0,0", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("0,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(300, 150)); |
+ EXPECT_EQ("150,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("0,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(700, 150)); |
+ EXPECT_EQ("350,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("0,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(701, 150)); |
+ EXPECT_EQ("350,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("0,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(702, 150)); |
+ EXPECT_EQ("351,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("1,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(703, 150)); |
+ EXPECT_EQ("352,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("2,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(704, 150)); |
+ EXPECT_EQ("354,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("4,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(712, 150)); |
+ EXPECT_EQ("360,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("10,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(600, 150)); |
+ EXPECT_EQ("310,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("10,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(720, 150)); |
+ EXPECT_EQ("370,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("20,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("410,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("410,75", CurrentPointOfInterest()); |
+ EXPECT_EQ("60,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(799, 150)); |
+ EXPECT_EQ("459,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("109,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(702, 150)); |
+ EXPECT_EQ("460,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("110,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("500,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("150,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("540,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("190,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("580,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("230,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("620,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("270,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("660,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("310,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("700,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("350,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("740,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("390,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(780, 150)); |
+ EXPECT_EQ("780,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("400,0 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(799, 150)); |
+ EXPECT_EQ("799,75", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("400,0 400x300", GetViewport().ToString()); |
+} |
+ |
+TEST_F(MagnificationControllerTest, PanWindow2xRightToLeft) { |
+ aura::Env* env = aura::Env::GetInstance(); |
+ |
+ MoveCursorWithEvent(gfx::Point(799, 300)); |
+ EXPECT_EQ(1.f, GetMagnificationController()->GetScale()); |
+ EXPECT_EQ("0,0 800x600", GetViewport().ToString()); |
+ EXPECT_EQ("799,300", env->last_mouse_location().ToString()); |
+ |
+ // Enables magnifier and confirm the viewport is at center. |
+ GetMagnificationController()->SetEnabled(true); |
+ |
+ MoveCursorWithEvent(gfx::Point(799, 300)); |
+ EXPECT_EQ("798,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("400,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("400,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("350,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("350,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("300,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("300,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("250,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("250,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("200,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("200,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("150,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("150,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("100,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("100,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("50,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("50,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("0,150 400x300", GetViewport().ToString()); |
+ |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("0,300", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("0,150 400x300", GetViewport().ToString()); |
+} |
+ |
+TEST_F(MagnificationControllerTest, PanWindowToRight) { |
+ aura::Env* env = aura::Env::GetInstance(); |
+ |
+ MoveCursorWithEvent(gfx::Point(400, 300)); |
+ EXPECT_EQ(1.f, GetMagnificationController()->GetScale()); |
+ EXPECT_EQ("0,0 800x600", GetViewport().ToString()); |
+ EXPECT_EQ("400,300", env->last_mouse_location().ToString()); |
+ |
+ float scale = 2.f; |
+ |
+ // Enables magnifier and confirm the viewport is at center. |
+ GetMagnificationController()->SetEnabled(true); |
+ EXPECT_FLOAT_EQ(2.f, GetMagnificationController()->GetScale()); |
+ |
+ scale *= kMagnificationFactor; |
+ GetMagnificationController()->SetScale(scale, false); |
+ EXPECT_FLOAT_EQ(2.3784142, GetMagnificationController()->GetScale()); |
+ MoveCursorWithEvent(gfx::Point(400, 300)); |
+ EXPECT_EQ("400,300", env->last_mouse_location().ToString()); |
+ MoveCursorWithEvent(gfx::Point(799, 300)); |
+ EXPECT_EQ("566,299", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("705,300", GetHostMouseLocation()); |
+ |
+ scale *= kMagnificationFactor; |
+ GetMagnificationController()->SetScale(scale, false); |
+ EXPECT_FLOAT_EQ(2.8284268, GetMagnificationController()->GetScale()); |
+ MoveCursorWithEvent(gfx::Point(799, 300)); |
+ EXPECT_EQ("599,299", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("702,300", GetHostMouseLocation()); |
+ |
+ scale *= kMagnificationFactor; |
+ GetMagnificationController()->SetScale(scale, false); |
+ EXPECT_FLOAT_EQ(3.3635852, GetMagnificationController()->GetScale()); |
+ MoveCursorWithEvent(gfx::Point(799, 300)); |
+ EXPECT_EQ("627,298", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("707,300", GetHostMouseLocation()); |
+ |
+ scale *= kMagnificationFactor; |
+ GetMagnificationController()->SetScale(scale, false); |
+ EXPECT_FLOAT_EQ(4.f, GetMagnificationController()->GetScale()); |
+ MoveCursorWithEvent(gfx::Point(799, 300)); |
+ EXPECT_EQ("649,298", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("704,300", GetHostMouseLocation()); |
+} |
+ |
+TEST_F(MagnificationControllerTest, PanWindowToLeft) { |
+ aura::Env* env = aura::Env::GetInstance(); |
+ |
+ MoveCursorWithEvent(gfx::Point(400, 300)); |
+ EXPECT_EQ(1.f, GetMagnificationController()->GetScale()); |
+ EXPECT_EQ("0,0 800x600", GetViewport().ToString()); |
+ EXPECT_EQ("400,300", env->last_mouse_location().ToString()); |
+ |
+ float scale = 2.f; |
+ |
+ // Enables magnifier and confirm the viewport is at center. |
+ GetMagnificationController()->SetEnabled(true); |
+ EXPECT_FLOAT_EQ(2.f, GetMagnificationController()->GetScale()); |
+ |
+ scale *= kMagnificationFactor; |
+ GetMagnificationController()->SetScale(scale, false); |
+ EXPECT_FLOAT_EQ(2.3784142, GetMagnificationController()->GetScale()); |
+ MoveCursorWithEvent(gfx::Point(400, 300)); |
+ EXPECT_EQ("400,300", env->last_mouse_location().ToString()); |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("231,299", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("100,300", GetHostMouseLocation()); |
+ |
+ scale *= kMagnificationFactor; |
+ GetMagnificationController()->SetScale(scale, false); |
+ EXPECT_FLOAT_EQ(2.8284268, GetMagnificationController()->GetScale()); |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("195,299", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("99,300", GetHostMouseLocation()); |
+ |
+ scale *= kMagnificationFactor; |
+ GetMagnificationController()->SetScale(scale, false); |
+ EXPECT_FLOAT_EQ(3.3635852, GetMagnificationController()->GetScale()); |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("165,298", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("98,300", GetHostMouseLocation()); |
+ |
+ scale *= kMagnificationFactor; |
+ GetMagnificationController()->SetScale(scale, false); |
+ EXPECT_FLOAT_EQ(4.f, GetMagnificationController()->GetScale()); |
+ MoveCursorWithEvent(gfx::Point(0, 300)); |
+ EXPECT_EQ("140,298", env->last_mouse_location().ToString()); |
+ EXPECT_EQ("100,300", GetHostMouseLocation()); |
+} |
+ |
} // namespace internal |
} // namespace ash |