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
3 // found in the LICENSE file.
4
5 #include "ui/views/controls/slider.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "base/strings/string_util.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "ui/base/accessibility/accessible_view_state.h"
12 #include "ui/base/l10n/l10n_util.h"
13 #include "ui/views/view.h"
14
15 namespace {
16
ClickAt(views::View * view,int x,int y)17 void ClickAt(views::View* view, int x, int y) {
18 gfx::Point point(x, y);
19 ui::MouseEvent press(ui::ET_MOUSE_PRESSED, point, point,
20 ui::EF_LEFT_MOUSE_BUTTON);
21 view->OnMousePressed(press);
22 ui::MouseEvent release(ui::ET_MOUSE_RELEASED, point, point,
23 ui::EF_LEFT_MOUSE_BUTTON);
24 view->OnMouseReleased(release);
25 }
26
27 }
28
29 namespace views {
30
TEST(SliderTest,UpdateFromClickHorizontal)31 TEST(SliderTest, UpdateFromClickHorizontal) {
32 scoped_ptr<Slider> slider(new Slider(NULL, Slider::HORIZONTAL));
33 View* view = slider.get();
34 gfx::Size size = view->GetPreferredSize();
35 view->SetSize(size);
36
37 ClickAt(view, 0, 0);
38 EXPECT_EQ(0.0f, slider->value());
39
40 ClickAt(view, view->width(), 0);
41 EXPECT_EQ(1.0f, slider->value());
42 }
43
TEST(SliderTest,UpdateFromClickVertical)44 TEST(SliderTest, UpdateFromClickVertical) {
45 scoped_ptr<Slider> slider(new Slider(NULL, Slider::VERTICAL));
46 View* view = slider.get();
47 gfx::Size size = view->GetPreferredSize();
48 view->SetSize(size);
49
50 ClickAt(view, 0, 0);
51 EXPECT_EQ(1.0f, slider->value());
52
53 ClickAt(view, 0, view->height());
54 EXPECT_EQ(0.0f, slider->value());
55 }
56
TEST(SliderTest,UpdateFromClickRTLHorizontal)57 TEST(SliderTest, UpdateFromClickRTLHorizontal) {
58 std::string locale = l10n_util::GetApplicationLocale("");
59 base::i18n::SetICUDefaultLocale("he");
60
61 scoped_ptr<Slider> slider(new Slider(NULL, Slider::HORIZONTAL));
62 View* view = slider.get();
63 gfx::Size size = view->GetPreferredSize();
64 view->SetSize(size);
65
66 ClickAt(view, 0, 0);
67 EXPECT_EQ(1.0f, slider->value());
68
69 ClickAt(view, view->width(), 0);
70 EXPECT_EQ(0.0f, slider->value());
71
72 // Reset locale.
73 base::i18n::SetICUDefaultLocale(locale);
74 }
75
76 } // namespace views
77