| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2010 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 #include "base/basictypes.h" | |
| 6 #include "chrome/browser/dock_info.h" | |
| 7 #include "gfx/point.h" | |
| 8 #include "testing/gtest/include/gtest/gtest.h" | |
| 9 | |
| 10 namespace { | |
| 11 // Distance in pixels between the hotspot and when the hint should be shown. | |
| 12 const int kHotSpotDeltaX = 120; | |
| 13 const int kHotSpotDeltaY = 120; | |
| 14 // Size of the popup window. | |
| 15 const int kPopupWidth = 70; | |
| 16 const int kPopupHeight = 70; | |
| 17 } // namespace | |
| 18 | |
| 19 TEST(DockInfoTest, IsCloseToPoint) { | |
| 20 bool in_enable_area; | |
| 21 gfx::Point screen_loc[] = { | |
| 22 gfx::Point(0, 0), | |
| 23 gfx::Point(kPopupWidth/2 - 1, kPopupHeight/2 - 1), | |
| 24 gfx::Point(kPopupWidth/2, kPopupHeight/2), | |
| 25 gfx::Point(kHotSpotDeltaX - 1, kHotSpotDeltaY - 1), | |
| 26 gfx::Point(kHotSpotDeltaX, kHotSpotDeltaY), | |
| 27 gfx::Point(-kHotSpotDeltaX, -kHotSpotDeltaY) | |
| 28 }; | |
| 29 gfx::Point hotspot[] = { | |
| 30 gfx::Point(0, 0), | |
| 31 gfx::Point(0, 0), | |
| 32 gfx::Point(kPopupWidth, kPopupHeight), | |
| 33 gfx::Point(0, 0), | |
| 34 gfx::Point(2*kHotSpotDeltaX, 2*kHotSpotDeltaY), | |
| 35 gfx::Point(0, 0) | |
| 36 }; | |
| 37 bool expected_results[] = { | |
| 38 true, true, true, true, false, false | |
| 39 }; | |
| 40 bool expected_in_enable_area[] = { | |
| 41 true, true, false, false, false, false | |
| 42 }; | |
| 43 | |
| 44 for (size_t i = 0; i < arraysize(expected_results); ++i) { | |
| 45 bool result = DockInfo::IsCloseToPoint( | |
| 46 screen_loc[i], hotspot[i].x(), hotspot[i].y(), &in_enable_area); | |
| 47 EXPECT_EQ(expected_results[i], result); | |
| 48 EXPECT_EQ(expected_in_enable_area[i], in_enable_area); | |
| 49 } | |
| 50 } | |
| 51 | |
| 52 TEST(DockInfoTest, IsCloseToMonitorPoint) { | |
| 53 bool in_enable_area; | |
| 54 gfx::Point screen_loc[] = { | |
| 55 gfx::Point(0, 0), | |
| 56 gfx::Point(kPopupWidth - 1, kPopupHeight/2 -1), | |
| 57 gfx::Point(kPopupWidth, kPopupHeight/2 - 1), | |
| 58 gfx::Point(kPopupWidth - 1, kPopupHeight), | |
| 59 gfx::Point(2*kHotSpotDeltaX, kHotSpotDeltaY - 1), | |
| 60 gfx::Point(2*kHotSpotDeltaX - 1, kHotSpotDeltaY), | |
| 61 gfx::Point(2*kHotSpotDeltaX - 1, kHotSpotDeltaY), | |
| 62 gfx::Point(0, 0), | |
| 63 gfx::Point(kPopupWidth/2 - 1, kPopupHeight - 1), | |
| 64 gfx::Point(kPopupWidth/2 - 1, kPopupHeight), | |
| 65 gfx::Point(kPopupWidth/2, kPopupHeight - 1), | |
| 66 gfx::Point(kHotSpotDeltaX - 1, 2*kHotSpotDeltaY), | |
| 67 gfx::Point(kHotSpotDeltaX, 2*kHotSpotDeltaY - 1), | |
| 68 }; | |
| 69 gfx::Point hotspot = gfx::Point(0, 0); | |
| 70 DockInfo::Type type[] = { | |
| 71 DockInfo::LEFT_HALF, | |
| 72 DockInfo::LEFT_HALF, | |
| 73 DockInfo::LEFT_HALF, | |
| 74 DockInfo::LEFT_HALF, | |
| 75 DockInfo::LEFT_HALF, | |
| 76 DockInfo::LEFT_HALF, | |
| 77 DockInfo::RIGHT_HALF, | |
| 78 DockInfo::BOTTOM_HALF, | |
| 79 DockInfo::BOTTOM_HALF, | |
| 80 DockInfo::BOTTOM_HALF, | |
| 81 DockInfo::BOTTOM_HALF, | |
| 82 DockInfo::BOTTOM_HALF, | |
| 83 DockInfo::BOTTOM_HALF, | |
| 84 }; | |
| 85 bool expected_results[] = { | |
| 86 true, true, true, true, false, false, false, | |
| 87 true, true, true, true, false, false | |
| 88 }; | |
| 89 bool expected_in_enable_area[] = { | |
| 90 true, true, false, false, false, false, false, | |
| 91 true, true, false, false, false, false | |
| 92 }; | |
| 93 | |
| 94 for (size_t i = 0; i < arraysize(expected_results); ++i) { | |
| 95 bool result = DockInfo::IsCloseToMonitorPoint( | |
| 96 screen_loc[i], hotspot.x(), hotspot.y(), type[i], &in_enable_area); | |
| 97 EXPECT_EQ(expected_results[i], result); | |
| 98 EXPECT_EQ(expected_in_enable_area[i], in_enable_area); | |
| 99 } | |
| 100 } | |
| 101 | |
| 102 TEST(DockInfoTest, IsValidForPoint) { | |
| 103 DockInfo d; | |
| 104 EXPECT_EQ(false, d.IsValidForPoint(gfx::Point(0, 0))); | |
| 105 d.set_monitor_bounds(gfx::Rect(0, 0, kPopupWidth, kPopupHeight)); | |
| 106 d.set_hot_spot(gfx::Point(0, 0)); | |
| 107 d.set_type(DockInfo::LEFT_HALF); | |
| 108 | |
| 109 gfx::Point screen_point[] = { | |
| 110 gfx::Point(0, 0), | |
| 111 gfx::Point(kPopupWidth + 1, kPopupHeight + 1), | |
| 112 gfx::Point(2 * kHotSpotDeltaX, kHotSpotDeltaY), | |
| 113 }; | |
| 114 | |
| 115 bool expected_result[] = { | |
| 116 true, false, false | |
| 117 }; | |
| 118 | |
| 119 for (size_t i = 0; i < arraysize(expected_result); ++i) { | |
| 120 EXPECT_EQ(expected_result[i], d.IsValidForPoint(screen_point[i])); | |
| 121 } | |
| 122 } | |
| 123 | |
| 124 TEST(DockInfoTest, equals) { | |
| 125 DockInfo d; | |
| 126 DockInfo dd; | |
| 127 EXPECT_EQ(true, d.equals(dd)); | |
| 128 d.set_type(DockInfo::MAXIMIZE); | |
| 129 EXPECT_EQ(false, d.equals(dd)); | |
| 130 } | |
| 131 | |
| 132 TEST(DockInfoTest, CheckMonitorPoint) { | |
| 133 DockInfo d; | |
| 134 gfx::Point screen_loc[] = { | |
| 135 gfx::Point(0, 0), | |
| 136 gfx::Point(2 * kHotSpotDeltaX, kHotSpotDeltaY), | |
| 137 gfx::Point(2 * kHotSpotDeltaX, kHotSpotDeltaY), | |
| 138 }; | |
| 139 | |
| 140 DockInfo::Type type[] = { | |
| 141 DockInfo::LEFT_HALF, | |
| 142 DockInfo::RIGHT_HALF, | |
| 143 DockInfo::MAXIMIZE | |
| 144 }; | |
| 145 | |
| 146 bool expected_result[] = { | |
| 147 true, false, false | |
| 148 }; | |
| 149 | |
| 150 for (size_t i = 0; i < arraysize(expected_result); ++i) { | |
| 151 bool result = d.CheckMonitorPoint(screen_loc[i], 0, 0, type[i]); | |
| 152 EXPECT_EQ(result, expected_result[i]); | |
| 153 if (result == true) { | |
| 154 EXPECT_EQ(0, d.hot_spot().x()); | |
| 155 EXPECT_EQ(0, d.hot_spot().y()); | |
| 156 EXPECT_EQ(type[i], d.type()); | |
| 157 } | |
| 158 } | |
| 159 } | |
| 160 | |
| 161 TEST(DockInfoTest, GetPopupRect) { | |
| 162 DockInfo d; | |
| 163 d.set_hot_spot(gfx::Point(kPopupWidth, kPopupHeight)); | |
| 164 DockInfo::Type type[] = { | |
| 165 DockInfo::MAXIMIZE, | |
| 166 DockInfo::LEFT_HALF, | |
| 167 DockInfo::RIGHT_HALF, | |
| 168 DockInfo::BOTTOM_HALF, | |
| 169 }; | |
| 170 int expected_x[] = { | |
| 171 kPopupWidth/2, | |
| 172 kPopupWidth, | |
| 173 0, | |
| 174 kPopupWidth/2 | |
| 175 }; | |
| 176 int expected_y[] = { | |
| 177 kPopupHeight, | |
| 178 kPopupHeight/2, | |
| 179 kPopupHeight/2, | |
| 180 0 | |
| 181 }; | |
| 182 | |
| 183 for (size_t i = 0; i < arraysize(type); ++i) { | |
| 184 d.set_type(type[i]); | |
| 185 gfx::Rect result = d.GetPopupRect(); | |
| 186 EXPECT_EQ(expected_x[i], result.x()); | |
| 187 EXPECT_EQ(expected_y[i], result.y()); | |
| 188 EXPECT_EQ(kPopupWidth, result.width()); | |
| 189 EXPECT_EQ(kPopupHeight, result.height()); | |
| 190 } | |
| 191 } | |
| OLD | NEW |