Index: ash/ime/candidate_window_view_unittest.cc |
diff --git a/ash/ime/candidate_window_view_unittest.cc b/ash/ime/candidate_window_view_unittest.cc |
deleted file mode 100644 |
index dd523b54061af2ff20d1298555a9ea1c5fcbb53a..0000000000000000000000000000000000000000 |
--- a/ash/ime/candidate_window_view_unittest.cc |
+++ /dev/null |
@@ -1,388 +0,0 @@ |
-// 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_window_view.h" |
- |
-#include <string> |
- |
-#include "ash/ime/candidate_view.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "ui/views/test/views_test_base.h" |
-#include "ui/views/widget/widget.h" |
- |
-namespace ash { |
-namespace ime { |
- |
-namespace { |
-const char* kSampleCandidate[] = { |
- "Sample Candidate 1", |
- "Sample Candidate 2", |
- "Sample Candidate 3" |
-}; |
-const char* kSampleAnnotation[] = { |
- "Sample Annotation 1", |
- "Sample Annotation 2", |
- "Sample Annotation 3" |
-}; |
-const char* kSampleDescriptionTitle[] = { |
- "Sample Description Title 1", |
- "Sample Description Title 2", |
- "Sample Description Title 3", |
-}; |
-const char* kSampleDescriptionBody[] = { |
- "Sample Description Body 1", |
- "Sample Description Body 2", |
- "Sample Description Body 3", |
-}; |
- |
-void InitCandidateWindow(size_t page_size, |
- ui::CandidateWindow* candidate_window) { |
- candidate_window->set_cursor_position(0); |
- candidate_window->set_page_size(page_size); |
- candidate_window->mutable_candidates()->clear(); |
- candidate_window->set_orientation(ui::CandidateWindow::VERTICAL); |
-} |
- |
-void InitCandidateWindowWithCandidatesFilled( |
- size_t page_size, |
- ui::CandidateWindow* candidate_window) { |
- InitCandidateWindow(page_size, candidate_window); |
- for (size_t i = 0; i < page_size; ++i) { |
- ui::CandidateWindow::Entry entry; |
- entry.value = base::UTF8ToUTF16(base::StringPrintf( |
- "value %lld", static_cast<unsigned long long>(i))); |
- entry.label = base::UTF8ToUTF16(base::StringPrintf( |
- "%lld", static_cast<unsigned long long>(i))); |
- candidate_window->mutable_candidates()->push_back(entry); |
- } |
-} |
- |
-} // namespace |
- |
-class CandidateWindowViewTest : public views::ViewsTestBase { |
- public: |
- CandidateWindowViewTest() {} |
- ~CandidateWindowViewTest() override {} |
- |
- protected: |
- void SetUp() override { |
- views::ViewsTestBase::SetUp(); |
- candidate_window_view_ = new CandidateWindowView(GetContext()); |
- candidate_window_view_->InitWidget(); |
- } |
- |
- CandidateWindowView* candidate_window_view() { |
- return candidate_window_view_; |
- } |
- |
- int selected_candidate_index_in_page() { |
- return candidate_window_view_->selected_candidate_index_in_page_; |
- } |
- |
- size_t GetCandidatesSize() const { |
- return candidate_window_view_->candidate_views_.size(); |
- } |
- |
- CandidateView* GetCandidateAt(size_t i) { |
- return candidate_window_view_->candidate_views_[i]; |
- } |
- |
- void SelectCandidateAt(int index_in_page) { |
- candidate_window_view_->SelectCandidateAt(index_in_page); |
- } |
- |
- void MaybeInitializeCandidateViews( |
- const ui::CandidateWindow& candidate_window) { |
- candidate_window_view_->MaybeInitializeCandidateViews(candidate_window); |
- } |
- |
- void ExpectLabels(const std::string& shortcut, |
- const std::string& candidate, |
- const std::string& annotation, |
- const CandidateView* row) { |
- EXPECT_EQ(shortcut, base::UTF16ToUTF8(row->shortcut_label_->text())); |
- EXPECT_EQ(candidate, base::UTF16ToUTF8(row->candidate_label_->text())); |
- EXPECT_EQ(annotation, base::UTF16ToUTF8(row->annotation_label_->text())); |
- } |
- |
- private: |
- // owned by |parent_|. |
- CandidateWindowView* candidate_window_view_; |
- |
- DISALLOW_COPY_AND_ASSIGN(CandidateWindowViewTest); |
-}; |
- |
-TEST_F(CandidateWindowViewTest, UpdateCandidatesTest_CursorVisibility) { |
- // Visible (by default) cursor. |
- ui::CandidateWindow candidate_window; |
- const int candidate_window_size = 9; |
- InitCandidateWindowWithCandidatesFilled(candidate_window_size, |
- &candidate_window); |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- EXPECT_EQ(0, selected_candidate_index_in_page()); |
- |
- // Invisible cursor. |
- candidate_window.set_is_cursor_visible(false); |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- EXPECT_EQ(-1, selected_candidate_index_in_page()); |
- |
- // Move the cursor to the end. |
- candidate_window.set_cursor_position(candidate_window_size - 1); |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- EXPECT_EQ(-1, selected_candidate_index_in_page()); |
- |
- // Change the cursor to visible. The cursor must be at the end. |
- candidate_window.set_is_cursor_visible(true); |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- EXPECT_EQ(candidate_window_size - 1, selected_candidate_index_in_page()); |
-} |
- |
-TEST_F(CandidateWindowViewTest, SelectCandidateAtTest) { |
- // Set 9 candidates. |
- ui::CandidateWindow candidate_window_large; |
- const int candidate_window_large_size = 9; |
- InitCandidateWindowWithCandidatesFilled(candidate_window_large_size, |
- &candidate_window_large); |
- candidate_window_large.set_cursor_position(candidate_window_large_size - 1); |
- candidate_window_view()->UpdateCandidates(candidate_window_large); |
- |
- // Select the last candidate. |
- SelectCandidateAt(candidate_window_large_size - 1); |
- |
- // Reduce the number of candidates to 3. |
- ui::CandidateWindow candidate_window_small; |
- const int candidate_window_small_size = 3; |
- InitCandidateWindowWithCandidatesFilled(candidate_window_small_size, |
- &candidate_window_small); |
- candidate_window_small.set_cursor_position(candidate_window_small_size - 1); |
- // Make sure the test doesn't crash if the candidate window reduced |
- // its size. (crbug.com/174163) |
- candidate_window_view()->UpdateCandidates(candidate_window_small); |
- SelectCandidateAt(candidate_window_small_size - 1); |
-} |
- |
-TEST_F(CandidateWindowViewTest, ShortcutSettingTest) { |
- const char* kEmptyLabel = ""; |
- const char* kCustomizedLabel[] = { "a", "s", "d" }; |
- const char* kExpectedHorizontalCustomizedLabel[] = { "a.", "s.", "d." }; |
- |
- { |
- SCOPED_TRACE("candidate_views allocation test"); |
- const size_t kMaxPageSize = 16; |
- for (size_t i = 1; i < kMaxPageSize; ++i) { |
- ui::CandidateWindow candidate_window; |
- InitCandidateWindow(i, &candidate_window); |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- EXPECT_EQ(i, GetCandidatesSize()); |
- } |
- } |
- { |
- SCOPED_TRACE("Empty string for each labels expects empty labels(vertical)"); |
- const size_t kPageSize = 3; |
- ui::CandidateWindow candidate_window; |
- InitCandidateWindow(kPageSize, &candidate_window); |
- |
- candidate_window.set_orientation(ui::CandidateWindow::VERTICAL); |
- for (size_t i = 0; i < kPageSize; ++i) { |
- ui::CandidateWindow::Entry entry; |
- entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); |
- entry.annotation = base::UTF8ToUTF16(kSampleAnnotation[i]); |
- entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); |
- entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); |
- entry.label = base::UTF8ToUTF16(kEmptyLabel); |
- candidate_window.mutable_candidates()->push_back(entry); |
- } |
- |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- |
- ASSERT_EQ(kPageSize, GetCandidatesSize()); |
- for (size_t i = 0; i < kPageSize; ++i) { |
- ExpectLabels(kEmptyLabel, kSampleCandidate[i], kSampleAnnotation[i], |
- GetCandidateAt(i)); |
- } |
- } |
- { |
- SCOPED_TRACE( |
- "Empty string for each labels expect empty labels(horizontal)"); |
- const size_t kPageSize = 3; |
- ui::CandidateWindow candidate_window; |
- InitCandidateWindow(kPageSize, &candidate_window); |
- |
- candidate_window.set_orientation(ui::CandidateWindow::HORIZONTAL); |
- for (size_t i = 0; i < kPageSize; ++i) { |
- ui::CandidateWindow::Entry entry; |
- entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); |
- entry.annotation = base::UTF8ToUTF16(kSampleAnnotation[i]); |
- entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); |
- entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); |
- entry.label = base::UTF8ToUTF16(kEmptyLabel); |
- candidate_window.mutable_candidates()->push_back(entry); |
- } |
- |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- |
- ASSERT_EQ(kPageSize, GetCandidatesSize()); |
- // Confirm actual labels not containing ".". |
- for (size_t i = 0; i < kPageSize; ++i) { |
- ExpectLabels(kEmptyLabel, kSampleCandidate[i], kSampleAnnotation[i], |
- GetCandidateAt(i)); |
- } |
- } |
- { |
- SCOPED_TRACE("Vertical customized label case"); |
- const size_t kPageSize = 3; |
- ui::CandidateWindow candidate_window; |
- InitCandidateWindow(kPageSize, &candidate_window); |
- |
- candidate_window.set_orientation(ui::CandidateWindow::VERTICAL); |
- for (size_t i = 0; i < kPageSize; ++i) { |
- ui::CandidateWindow::Entry entry; |
- entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); |
- entry.annotation = base::UTF8ToUTF16(kSampleAnnotation[i]); |
- entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); |
- entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); |
- entry.label = base::UTF8ToUTF16(kCustomizedLabel[i]); |
- candidate_window.mutable_candidates()->push_back(entry); |
- } |
- |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- |
- ASSERT_EQ(kPageSize, GetCandidatesSize()); |
- // Confirm actual labels not containing ".". |
- for (size_t i = 0; i < kPageSize; ++i) { |
- ExpectLabels(kCustomizedLabel[i], |
- kSampleCandidate[i], |
- kSampleAnnotation[i], |
- GetCandidateAt(i)); |
- } |
- } |
- { |
- SCOPED_TRACE("Horizontal customized label case"); |
- const size_t kPageSize = 3; |
- ui::CandidateWindow candidate_window; |
- InitCandidateWindow(kPageSize, &candidate_window); |
- |
- candidate_window.set_orientation(ui::CandidateWindow::HORIZONTAL); |
- for (size_t i = 0; i < kPageSize; ++i) { |
- ui::CandidateWindow::Entry entry; |
- entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); |
- entry.annotation = base::UTF8ToUTF16(kSampleAnnotation[i]); |
- entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); |
- entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); |
- entry.label = base::UTF8ToUTF16(kCustomizedLabel[i]); |
- candidate_window.mutable_candidates()->push_back(entry); |
- } |
- |
- candidate_window_view()->UpdateCandidates(candidate_window); |
- |
- ASSERT_EQ(kPageSize, GetCandidatesSize()); |
- // Confirm actual labels not containing ".". |
- for (size_t i = 0; i < kPageSize; ++i) { |
- ExpectLabels(kExpectedHorizontalCustomizedLabel[i], |
- kSampleCandidate[i], |
- kSampleAnnotation[i], |
- GetCandidateAt(i)); |
- } |
- } |
-} |
- |
-TEST_F(CandidateWindowViewTest, DoNotChangeRowHeightWithLabelSwitchTest) { |
- const size_t kPageSize = 10; |
- ui::CandidateWindow candidate_window; |
- ui::CandidateWindow no_shortcut_candidate_window; |
- |
- const base::string16 kSampleCandidate1 = base::UTF8ToUTF16( |
- "Sample String 1"); |
- const base::string16 kSampleCandidate2 = base::UTF8ToUTF16( |
- "\xE3\x81\x82"); // multi byte string. |
- const base::string16 kSampleCandidate3 = base::UTF8ToUTF16("....."); |
- |
- const base::string16 kSampleShortcut1 = base::UTF8ToUTF16("1"); |
- const base::string16 kSampleShortcut2 = base::UTF8ToUTF16("b"); |
- const base::string16 kSampleShortcut3 = base::UTF8ToUTF16("C"); |
- |
- const base::string16 kSampleAnnotation1 = base::UTF8ToUTF16( |
- "Sample Annotation 1"); |
- const base::string16 kSampleAnnotation2 = base::UTF8ToUTF16( |
- "\xE3\x81\x82"); // multi byte string. |
- const base::string16 kSampleAnnotation3 = base::UTF8ToUTF16("......"); |
- |
- // Create CandidateWindow object. |
- InitCandidateWindow(kPageSize, &candidate_window); |
- |
- candidate_window.set_cursor_position(0); |
- candidate_window.set_page_size(3); |
- candidate_window.mutable_candidates()->clear(); |
- candidate_window.set_orientation(ui::CandidateWindow::VERTICAL); |
- no_shortcut_candidate_window.CopyFrom(candidate_window); |
- |
- ui::CandidateWindow::Entry entry; |
- entry.value = kSampleCandidate1; |
- entry.annotation = kSampleAnnotation1; |
- candidate_window.mutable_candidates()->push_back(entry); |
- entry.label = kSampleShortcut1; |
- no_shortcut_candidate_window.mutable_candidates()->push_back(entry); |
- |
- entry.value = kSampleCandidate2; |
- entry.annotation = kSampleAnnotation2; |
- candidate_window.mutable_candidates()->push_back(entry); |
- entry.label = kSampleShortcut2; |
- no_shortcut_candidate_window.mutable_candidates()->push_back(entry); |
- |
- entry.value = kSampleCandidate3; |
- entry.annotation = kSampleAnnotation3; |
- candidate_window.mutable_candidates()->push_back(entry); |
- entry.label = kSampleShortcut3; |
- no_shortcut_candidate_window.mutable_candidates()->push_back(entry); |
- |
- int before_height = 0; |
- |
- // Test for shortcut mode to no-shortcut mode. |
- // Initialize with a shortcut mode candidate window. |
- MaybeInitializeCandidateViews(candidate_window); |
- ASSERT_EQ(3UL, GetCandidatesSize()); |
- // Check the selected index is invalidated. |
- EXPECT_EQ(-1, selected_candidate_index_in_page()); |
- before_height = |
- GetCandidateAt(0)->GetContentsBounds().height(); |
- // Checks all entry have same row height. |
- for (size_t i = 1; i < GetCandidatesSize(); ++i) |
- EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height()); |
- |
- // Initialize with a no shortcut mode candidate window. |
- MaybeInitializeCandidateViews(no_shortcut_candidate_window); |
- ASSERT_EQ(3UL, GetCandidatesSize()); |
- // Check the selected index is invalidated. |
- EXPECT_EQ(-1, selected_candidate_index_in_page()); |
- EXPECT_EQ(before_height, GetCandidateAt(0)->GetContentsBounds().height()); |
- // Checks all entry have same row height. |
- for (size_t i = 1; i < GetCandidatesSize(); ++i) |
- EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height()); |
- |
- // Test for no-shortcut mode to shortcut mode. |
- // Initialize with a no shortcut mode candidate window. |
- MaybeInitializeCandidateViews(no_shortcut_candidate_window); |
- ASSERT_EQ(3UL, GetCandidatesSize()); |
- // Check the selected index is invalidated. |
- EXPECT_EQ(-1, selected_candidate_index_in_page()); |
- before_height = GetCandidateAt(0)->GetContentsBounds().height(); |
- // Checks all entry have same row height. |
- for (size_t i = 1; i < GetCandidatesSize(); ++i) |
- EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height()); |
- |
- // Initialize with a shortcut mode candidate window. |
- MaybeInitializeCandidateViews(candidate_window); |
- ASSERT_EQ(3UL, GetCandidatesSize()); |
- // Check the selected index is invalidated. |
- EXPECT_EQ(-1, selected_candidate_index_in_page()); |
- EXPECT_EQ(before_height, GetCandidateAt(0)->GetContentsBounds().height()); |
- // Checks all entry have same row height. |
- for (size_t i = 1; i < GetCandidatesSize(); ++i) |
- EXPECT_EQ(before_height, GetCandidateAt(i)->GetContentsBounds().height()); |
-} |
- |
-} // namespace ime |
-} // namespace ash |