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

Unified Diff: ash/ime/candidate_view_unittest.cc

Issue 258463002: Introduces 'highlighted' property to candidate view. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 years, 8 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 | « ash/ime/candidate_view.cc ('k') | ash/ime/candidate_window_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/ime/candidate_view_unittest.cc
diff --git a/ash/ime/candidate_view_unittest.cc b/ash/ime/candidate_view_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..708ec920bfde70945ac4da91541803bc2ed01037
--- /dev/null
+++ b/ash/ime/candidate_view_unittest.cc
@@ -0,0 +1,185 @@
+// 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.
+
+#include "ash/ime/candidate_view.h"
+
+#include "base/logging.h"
+#include "base/strings/utf_string_conversions.h"
+#include "ui/aura/test/event_generator.h"
+#include "ui/aura/window.h"
+#include "ui/views/controls/button/button.h"
+#include "ui/views/layout/box_layout.h"
+#include "ui/views/layout/fill_layout.h"
+#include "ui/views/test/views_test_base.h"
+#include "ui/views/widget/widget_delegate.h"
+
+namespace ash {
+namespace ime {
+namespace {
+
+const char* const kDummyCandidates[] = {
+ "candidate1",
+ "candidate2",
+ "candidate3",
+};
+
+} // namespace
+
+class CandidateViewTest : public views::ViewsTestBase,
+ public views::ButtonListener {
+ public:
+ CandidateViewTest() : widget_(NULL), last_pressed_(NULL) {}
+ virtual ~CandidateViewTest() {}
+
+ virtual void SetUp() OVERRIDE {
+ views::ViewsTestBase::SetUp();
+
+ views::Widget::InitParams init_params(CreateParams(
+ views::Widget::InitParams::TYPE_WINDOW));
+
+ init_params.delegate = new views::WidgetDelegateView();
+
+ container_ = init_params.delegate->GetContentsView();
+ container_->SetLayoutManager(
+ new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0));
+ for (size_t i = 0; i < arraysize(kDummyCandidates); ++i) {
+ CandidateView* candidate = new CandidateView(
+ this, ui::CandidateWindow::VERTICAL);
+ ui::CandidateWindow::Entry entry;
+ entry.value = base::UTF8ToUTF16(kDummyCandidates[i]);
+ candidate->SetEntry(entry);
+ container_->AddChildView(candidate);
+ }
+
+ widget_ = new views::Widget();
+ widget_->Init(init_params);
+ widget_->Show();
+
+ aura::Window* native_window = widget_->GetNativeWindow();
+ event_generator_.reset(new aura::test::EventGenerator(
+ native_window->GetRootWindow(), native_window));
+ }
+
+ virtual void TearDown() OVERRIDE {
+ widget_->Close();
+
+ views::ViewsTestBase::TearDown();
+ }
+
+ protected:
+ CandidateView* GetCandidateAt(int index) {
+ return static_cast<CandidateView*>(container_->child_at(index));
+ }
+
+ int GetHighlightedIndex(int* highlighted_count) const {
+ *highlighted_count = 0;
+ int last_highlighted = -1;
+ for (int i = 0; i < container_->child_count(); ++i) {
+ if (container_->child_at(i)->background() != NULL) {
+ (*highlighted_count)++;
+ last_highlighted = i;
+ }
+ }
+ return last_highlighted;
+ }
+
+ int GetLastPressedIndexAndReset() {
+ for (int i = 0; i < container_->child_count(); ++i) {
+ if (last_pressed_ == container_->child_at(i)) {
+ last_pressed_ = NULL;
+ return i;
+ }
+ }
+
+ DCHECK(last_pressed_ == NULL);
+ last_pressed_ = NULL;
+ return -1;
+ }
+
+ aura::test::EventGenerator* event_generator() {
+ return event_generator_.get();
+ }
+
+ private:
+ virtual void ButtonPressed(views::Button* sender,
+ const ui::Event& event) OVERRIDE {
+ last_pressed_ = sender;
+ }
+
+ views::Widget* widget_;
+ views::View* container_;
+ scoped_ptr<aura::test::EventGenerator> event_generator_;
+ views::View* last_pressed_;
+
+ DISALLOW_COPY_AND_ASSIGN(CandidateViewTest);
+};
+
+TEST_F(CandidateViewTest, MouseHovers) {
+ GetCandidateAt(0)->SetHighlighted(true);
+
+ int highlighted_count = 0;
+ EXPECT_EQ(0, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+
+ // Mouse hover shouldn't change the background.
+ event_generator()->MoveMouseTo(
+ GetCandidateAt(0)->GetBoundsInScreen().CenterPoint());
+ EXPECT_EQ(0, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+
+ // Mouse hover shouldn't change the background.
+ event_generator()->MoveMouseTo(
+ GetCandidateAt(1)->GetBoundsInScreen().CenterPoint());
+ EXPECT_EQ(0, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+
+ // Mouse hover shouldn't change the background.
+ event_generator()->MoveMouseTo(
+ GetCandidateAt(2)->GetBoundsInScreen().CenterPoint());
+ EXPECT_EQ(0, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+}
+
+TEST_F(CandidateViewTest, MouseClick) {
+ event_generator()->MoveMouseTo(
+ GetCandidateAt(1)->GetBoundsInScreen().CenterPoint());
+ event_generator()->ClickLeftButton();
+ EXPECT_EQ(1, GetLastPressedIndexAndReset());
+}
+
+TEST_F(CandidateViewTest, ClickAndMove) {
+ GetCandidateAt(0)->SetHighlighted(true);
+
+ int highlighted_count = 0;
+ EXPECT_EQ(0, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+
+ event_generator()->MoveMouseTo(
+ GetCandidateAt(2)->GetBoundsInScreen().CenterPoint());
+ event_generator()->PressLeftButton();
+ EXPECT_EQ(2, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+
+ // Highlight follows the drag.
+ event_generator()->MoveMouseTo(
+ GetCandidateAt(1)->GetBoundsInScreen().CenterPoint());
+ EXPECT_EQ(1, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+
+ event_generator()->MoveMouseTo(
+ GetCandidateAt(0)->GetBoundsInScreen().CenterPoint());
+ EXPECT_EQ(0, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+
+ event_generator()->MoveMouseTo(
+ GetCandidateAt(1)->GetBoundsInScreen().CenterPoint());
+ EXPECT_EQ(1, GetHighlightedIndex(&highlighted_count));
+ EXPECT_EQ(1, highlighted_count);
+
+ event_generator()->ReleaseLeftButton();
+ EXPECT_EQ(1, GetLastPressedIndexAndReset());
+}
+
+} // namespace ime
+} // namespace ash
« no previous file with comments | « ash/ime/candidate_view.cc ('k') | ash/ime/candidate_window_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698