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

Side by Side Diff: ui/views/controls/slider_unittest.cc

Issue 2692043009: Remove last MD reference from TrayPopupUtils. (Closed)
Patch Set: rebase Created 3 years, 10 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 | « ui/views/controls/slider.cc ('k') | ui/views/examples/slider_example.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/controls/slider.h" 5 #include "ui/views/controls/slider.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 9
10 #include "base/i18n/rtl.h" 10 #include "base/i18n/rtl.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
13 #include "base/strings/utf_string_conversions.h" 13 #include "base/strings/utf_string_conversions.h"
14 #include "base/time/time.h" 14 #include "base/time/time.h"
15 #include "build/build_config.h" 15 #include "build/build_config.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 #include "ui/events/event.h" 17 #include "ui/events/event.h"
18 #include "ui/events/gesture_event_details.h" 18 #include "ui/events/gesture_event_details.h"
19 #include "ui/events/keycodes/keyboard_codes.h" 19 #include "ui/events/keycodes/keyboard_codes.h"
20 #include "ui/events/test/event_generator.h" 20 #include "ui/events/test/event_generator.h"
21 #include "ui/views/test/slider_test_api.h" 21 #include "ui/views/test/slider_test_api.h"
22 #include "ui/views/test/test_slider.h"
23 #include "ui/views/test/views_test_base.h" 22 #include "ui/views/test/views_test_base.h"
24 #include "ui/views/view.h" 23 #include "ui/views/view.h"
25 #include "ui/views/widget/widget.h" 24 #include "ui/views/widget/widget.h"
26 #include "ui/views/widget/widget_delegate.h" 25 #include "ui/views/widget/widget_delegate.h"
27 26
28 namespace { 27 namespace {
29 28
30 // A views::SliderListener that tracks simple event call history. 29 // A views::SliderListener that tracks simple event call history.
31 class TestSliderListener : public views::SliderListener { 30 class TestSliderListener : public views::SliderListener {
32 public: 31 public:
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 175
177 SliderTest::SliderTest() 176 SliderTest::SliderTest()
178 : slider_(NULL), default_locale_(), max_x_(0), max_y_(0) {} 177 : slider_(NULL), default_locale_(), max_x_(0), max_y_(0) {}
179 178
180 SliderTest::~SliderTest() { 179 SliderTest::~SliderTest() {
181 } 180 }
182 181
183 void SliderTest::SetUp() { 182 void SliderTest::SetUp() {
184 views::ViewsTestBase::SetUp(); 183 views::ViewsTestBase::SetUp();
185 184
186 slider_ = new TestSlider(nullptr); 185 slider_ = new Slider(nullptr);
187 View* view = slider_; 186 View* view = slider_;
188 gfx::Size size = view->GetPreferredSize(); 187 gfx::Size size = view->GetPreferredSize();
189 view->SetSize(size); 188 view->SetSize(size);
190 max_x_ = size.width() - 1; 189 max_x_ = size.width() - 1;
191 max_y_ = size.height() - 1; 190 max_y_ = size.height() - 1;
192 default_locale_ = base::i18n::GetConfiguredLocale(); 191 default_locale_ = base::i18n::GetConfiguredLocale();
193 192
194 views::Widget::InitParams init_params(CreateParams( 193 views::Widget::InitParams init_params(CreateParams(
195 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS)); 194 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS));
196 init_params.bounds = gfx::Rect(size); 195 init_params.bounds = gfx::Rect(size);
(...skipping 15 matching lines...) Expand all
212 211
213 views::ViewsTestBase::TearDown(); 212 views::ViewsTestBase::TearDown();
214 } 213 }
215 214
216 void SliderTest::ClickAt(int x, int y) { 215 void SliderTest::ClickAt(int x, int y) {
217 gfx::Point point(x, y); 216 gfx::Point point(x, y);
218 event_generator_->MoveMouseTo(point); 217 event_generator_->MoveMouseTo(point);
219 event_generator_->ClickLeftButton(); 218 event_generator_->ClickLeftButton();
220 } 219 }
221 220
222 // Test fixture for horizontally oriented slider tests. 221 TEST_F(SliderTest, UpdateFromClickHorizontal) {
223 class HorizontalSliderTest : public SliderTest {
224 public:
225 HorizontalSliderTest();
226 ~HorizontalSliderTest() override;
227
228 private:
229 DISALLOW_COPY_AND_ASSIGN(HorizontalSliderTest);
230 };
231
232 HorizontalSliderTest::HorizontalSliderTest() : SliderTest() {}
233
234 HorizontalSliderTest::~HorizontalSliderTest() {
235 }
236
237 TEST_F(HorizontalSliderTest, UpdateFromClickHorizontal) {
238 ClickAt(0, 0); 222 ClickAt(0, 0);
239 EXPECT_EQ(0.0f, slider()->value()); 223 EXPECT_EQ(0.0f, slider()->value());
240 224
241 ClickAt(max_x(), 0); 225 ClickAt(max_x(), 0);
242 EXPECT_EQ(1.0f, slider()->value()); 226 EXPECT_EQ(1.0f, slider()->value());
243 } 227 }
244 228
245 229 TEST_F(SliderTest, UpdateFromClickRTLHorizontal) {
246 TEST_F(HorizontalSliderTest, UpdateFromClickRTLHorizontal) {
247 base::i18n::SetICUDefaultLocale("he"); 230 base::i18n::SetICUDefaultLocale("he");
248 231
249 ClickAt(0, 0); 232 ClickAt(0, 0);
250 EXPECT_EQ(1.0f, slider()->value()); 233 EXPECT_EQ(1.0f, slider()->value());
251 234
252 ClickAt(max_x(), 0); 235 ClickAt(max_x(), 0);
253 EXPECT_EQ(0.0f, slider()->value()); 236 EXPECT_EQ(0.0f, slider()->value());
254 } 237 }
255 238
256 // No touch on desktop Mac. Tracked in http://crbug.com/445520. 239 // No touch on desktop Mac. Tracked in http://crbug.com/445520.
257 #if !defined(OS_MACOSX) || defined(USE_AURA) 240 #if !defined(OS_MACOSX) || defined(USE_AURA)
258 241
259 // Test the slider location after a tap gesture. 242 // Test the slider location after a tap gesture.
260 TEST_F(HorizontalSliderTest, SliderValueForTapGesture) { 243 TEST_F(SliderTest, SliderValueForTapGesture) {
261 // Tap below the minimum. 244 // Tap below the minimum.
262 slider()->SetValue(0.5); 245 slider()->SetValue(0.5);
263 event_generator()->GestureTapAt(gfx::Point(0, 0)); 246 event_generator()->GestureTapAt(gfx::Point(0, 0));
264 EXPECT_FLOAT_EQ(0, slider()->value()); 247 EXPECT_FLOAT_EQ(0, slider()->value());
265 248
266 // Tap above the maximum. 249 // Tap above the maximum.
267 slider()->SetValue(0.5); 250 slider()->SetValue(0.5);
268 event_generator()->GestureTapAt(gfx::Point(max_x(), max_y())); 251 event_generator()->GestureTapAt(gfx::Point(max_x(), max_y()));
269 EXPECT_FLOAT_EQ(1, slider()->value()); 252 EXPECT_FLOAT_EQ(1, slider()->value());
270 253
271 // Tap somwhere in the middle. 254 // Tap somwhere in the middle.
272 slider()->SetValue(0.5); 255 slider()->SetValue(0.5);
273 event_generator()->GestureTapAt(gfx::Point(0.75 * max_x(), 0.75 * max_y())); 256 event_generator()->GestureTapAt(gfx::Point(0.75 * max_x(), 0.75 * max_y()));
274 EXPECT_NEAR(0.75, slider()->value(), 0.03); 257 EXPECT_NEAR(0.75, slider()->value(), 0.03);
275 } 258 }
276 259
277 // Test the slider location after a scroll gesture. 260 // Test the slider location after a scroll gesture.
278 TEST_F(HorizontalSliderTest, SliderValueForScrollGesture) { 261 TEST_F(SliderTest, SliderValueForScrollGesture) {
279 // Scroll below the minimum. 262 // Scroll below the minimum.
280 slider()->SetValue(0.5); 263 slider()->SetValue(0.5);
281 event_generator()->GestureScrollSequence( 264 event_generator()->GestureScrollSequence(
282 gfx::Point(0.5 * max_x(), 0.5 * max_y()), 265 gfx::Point(0.5 * max_x(), 0.5 * max_y()),
283 gfx::Point(0, 0), 266 gfx::Point(0, 0),
284 base::TimeDelta::FromMilliseconds(10), 267 base::TimeDelta::FromMilliseconds(10),
285 5 /* steps */); 268 5 /* steps */);
286 EXPECT_EQ(0, slider()->value()); 269 EXPECT_EQ(0, slider()->value());
287 270
288 // Scroll above the maximum. 271 // Scroll above the maximum.
289 slider()->SetValue(0.5); 272 slider()->SetValue(0.5);
290 event_generator()->GestureScrollSequence( 273 event_generator()->GestureScrollSequence(
291 gfx::Point(0.5 * max_x(), 0.5 * max_y()), gfx::Point(max_x(), max_y()), 274 gfx::Point(0.5 * max_x(), 0.5 * max_y()), gfx::Point(max_x(), max_y()),
292 base::TimeDelta::FromMilliseconds(10), 5 /* steps */); 275 base::TimeDelta::FromMilliseconds(10), 5 /* steps */);
293 EXPECT_EQ(1, slider()->value()); 276 EXPECT_EQ(1, slider()->value());
294 277
295 // Scroll somewhere in the middle. 278 // Scroll somewhere in the middle.
296 slider()->SetValue(0.25); 279 slider()->SetValue(0.25);
297 event_generator()->GestureScrollSequence( 280 event_generator()->GestureScrollSequence(
298 gfx::Point(0.25 * max_x(), 0.25 * max_y()), 281 gfx::Point(0.25 * max_x(), 0.25 * max_y()),
299 gfx::Point(0.75 * max_x(), 0.75 * max_y()), 282 gfx::Point(0.75 * max_x(), 0.75 * max_y()),
300 base::TimeDelta::FromMilliseconds(10), 283 base::TimeDelta::FromMilliseconds(10),
301 5 /* steps */); 284 5 /* steps */);
302 EXPECT_NEAR(0.75, slider()->value(), 0.03); 285 EXPECT_NEAR(0.75, slider()->value(), 0.03);
303 } 286 }
304 287
305 // Test the slider location by adjusting it using keyboard. 288 // Test the slider location by adjusting it using keyboard.
306 TEST_F(HorizontalSliderTest, SliderValueForKeyboard) { 289 TEST_F(SliderTest, SliderValueForKeyboard) {
307 float value =0.5; 290 float value = 0.5;
308 slider()->SetValue(value); 291 slider()->SetValue(value);
309 slider()->RequestFocus(); 292 slider()->RequestFocus();
310 event_generator()->PressKey(ui::VKEY_RIGHT, 0); 293 event_generator()->PressKey(ui::VKEY_RIGHT, 0);
311 EXPECT_GT(slider()->value(), value); 294 EXPECT_GT(slider()->value(), value);
312 295
313 slider()->SetValue(value); 296 slider()->SetValue(value);
314 event_generator()->PressKey(ui::VKEY_LEFT, 0); 297 event_generator()->PressKey(ui::VKEY_LEFT, 0);
315 EXPECT_LT(slider()->value(), value); 298 EXPECT_LT(slider()->value(), value);
316 } 299 }
317 300
318 // Verifies the correct SliderListener events are raised for a tap gesture. 301 // Verifies the correct SliderListener events are raised for a tap gesture.
319 TEST_F(HorizontalSliderTest, SliderListenerEventsForTapGesture) { 302 TEST_F(SliderTest, SliderListenerEventsForTapGesture) {
320 test::SliderTestApi slider_test_api(slider()); 303 test::SliderTestApi slider_test_api(slider());
321 slider_test_api.SetListener(&slider_listener()); 304 slider_test_api.SetListener(&slider_listener());
322 305
323 event_generator()->GestureTapAt(gfx::Point(0, 0)); 306 event_generator()->GestureTapAt(gfx::Point(0, 0));
324 EXPECT_EQ(1, slider_listener().last_drag_started_epoch()); 307 EXPECT_EQ(1, slider_listener().last_drag_started_epoch());
325 EXPECT_EQ(2, slider_listener().last_drag_ended_epoch()); 308 EXPECT_EQ(2, slider_listener().last_drag_ended_epoch());
326 EXPECT_EQ(slider(), slider_listener().last_drag_started_sender()); 309 EXPECT_EQ(slider(), slider_listener().last_drag_started_sender());
327 EXPECT_EQ(slider(), slider_listener().last_drag_ended_sender()); 310 EXPECT_EQ(slider(), slider_listener().last_drag_ended_sender());
328 } 311 }
329 312
330 // Verifies the correct SliderListener events are raised for a scroll gesture. 313 // Verifies the correct SliderListener events are raised for a scroll gesture.
331 TEST_F(HorizontalSliderTest, SliderListenerEventsForScrollGesture) { 314 TEST_F(SliderTest, SliderListenerEventsForScrollGesture) {
332 test::SliderTestApi slider_test_api(slider()); 315 test::SliderTestApi slider_test_api(slider());
333 slider_test_api.SetListener(&slider_listener()); 316 slider_test_api.SetListener(&slider_listener());
334 317
335 event_generator()->GestureScrollSequence( 318 event_generator()->GestureScrollSequence(
336 gfx::Point(0.25 * max_x(), 0.25 * max_y()), 319 gfx::Point(0.25 * max_x(), 0.25 * max_y()),
337 gfx::Point(0.75 * max_x(), 0.75 * max_y()), 320 gfx::Point(0.75 * max_x(), 0.75 * max_y()),
338 base::TimeDelta::FromMilliseconds(0), 321 base::TimeDelta::FromMilliseconds(0),
339 5 /* steps */); 322 5 /* steps */);
340 323
341 EXPECT_EQ(1, slider_listener().last_drag_started_epoch()); 324 EXPECT_EQ(1, slider_listener().last_drag_started_epoch());
342 EXPECT_GT(slider_listener().last_drag_ended_epoch(), 325 EXPECT_GT(slider_listener().last_drag_ended_epoch(),
343 slider_listener().last_drag_started_epoch()); 326 slider_listener().last_drag_started_epoch());
344 EXPECT_EQ(slider(), slider_listener().last_drag_started_sender()); 327 EXPECT_EQ(slider(), slider_listener().last_drag_started_sender());
345 EXPECT_EQ(slider(), slider_listener().last_drag_ended_sender()); 328 EXPECT_EQ(slider(), slider_listener().last_drag_ended_sender());
346 } 329 }
347 330
348 // Verifies the correct SliderListener events are raised for a multi 331 // Verifies the correct SliderListener events are raised for a multi
349 // finger scroll gesture. 332 // finger scroll gesture.
350 TEST_F(HorizontalSliderTest, SliderListenerEventsForMultiFingerScrollGesture) { 333 TEST_F(SliderTest, SliderListenerEventsForMultiFingerScrollGesture) {
351 test::SliderTestApi slider_test_api(slider()); 334 test::SliderTestApi slider_test_api(slider());
352 slider_test_api.SetListener(&slider_listener()); 335 slider_test_api.SetListener(&slider_listener());
353 336
354 gfx::Point points[] = {gfx::Point(0, 0.1 * max_y()), 337 gfx::Point points[] = {gfx::Point(0, 0.1 * max_y()),
355 gfx::Point(0, 0.2 * max_y())}; 338 gfx::Point(0, 0.2 * max_y())};
356 event_generator()->GestureMultiFingerScroll(2 /* count */, points, 339 event_generator()->GestureMultiFingerScroll(2 /* count */, points,
357 0 /* event_separation_time_ms */, 5 /* steps */, 340 0 /* event_separation_time_ms */, 5 /* steps */,
358 2 /* move_x */, 0 /* move_y */); 341 2 /* move_x */, 0 /* move_y */);
359 342
360 EXPECT_EQ(1, slider_listener().last_drag_started_epoch()); 343 EXPECT_EQ(1, slider_listener().last_drag_started_epoch());
361 EXPECT_GT(slider_listener().last_drag_ended_epoch(), 344 EXPECT_GT(slider_listener().last_drag_ended_epoch(),
362 slider_listener().last_drag_started_epoch()); 345 slider_listener().last_drag_started_epoch());
363 EXPECT_EQ(slider(), slider_listener().last_drag_started_sender()); 346 EXPECT_EQ(slider(), slider_listener().last_drag_started_sender());
364 EXPECT_EQ(slider(), slider_listener().last_drag_ended_sender()); 347 EXPECT_EQ(slider(), slider_listener().last_drag_ended_sender());
365 } 348 }
366 349
367 #endif // !defined(OS_MACOSX) || defined(USE_AURA) 350 #endif // !defined(OS_MACOSX) || defined(USE_AURA)
368 351
369 } // namespace views 352 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/slider.cc ('k') | ui/views/examples/slider_example.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698