// Copyright 2013 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. // TODO(nona): Add more tests. #include "chromeos/ime/candidate_window.h" #include <string> #include "base/compiler_specific.h" #include "base/logging.h" #include "base/memory/scoped_ptr.h" #include "testing/gtest/include/gtest/gtest.h" namespace chromeos { namespace input_method { TEST(CandidateWindow, IsEqualTest) { CandidateWindow cw1; CandidateWindow cw2; const char kSampleString1[] = "Sample 1"; const char kSampleString2[] = "Sample 2"; EXPECT_TRUE(cw1.IsEqual(cw2)); EXPECT_TRUE(cw2.IsEqual(cw1)); cw1.set_page_size(1); cw2.set_page_size(2); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw2.set_page_size(1); cw1.set_cursor_position(1); cw2.set_cursor_position(2); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw2.set_cursor_position(1); cw1.set_is_cursor_visible(true); cw2.set_is_cursor_visible(false); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw2.set_is_cursor_visible(true); cw1.set_orientation(CandidateWindow::HORIZONTAL); cw2.set_orientation(CandidateWindow::VERTICAL); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw2.set_orientation(CandidateWindow::HORIZONTAL); cw1.set_show_window_at_composition(true); cw2.set_show_window_at_composition(false); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw2.set_show_window_at_composition(true); // Check equality for candidates member variable. CandidateWindow::Entry entry1; CandidateWindow::Entry entry2; cw1.mutable_candidates()->push_back(entry1); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw2.mutable_candidates()->push_back(entry2); EXPECT_TRUE(cw1.IsEqual(cw2)); EXPECT_TRUE(cw2.IsEqual(cw1)); entry1.value = kSampleString1; entry2.value = kSampleString2; cw1.mutable_candidates()->push_back(entry1); cw2.mutable_candidates()->push_back(entry2); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw1.mutable_candidates()->clear(); cw2.mutable_candidates()->clear(); entry1.label = kSampleString1; entry2.label = kSampleString2; cw1.mutable_candidates()->push_back(entry1); cw2.mutable_candidates()->push_back(entry2); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw1.mutable_candidates()->clear(); cw2.mutable_candidates()->clear(); entry1.annotation = kSampleString1; entry2.annotation = kSampleString2; cw1.mutable_candidates()->push_back(entry1); cw2.mutable_candidates()->push_back(entry2); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw1.mutable_candidates()->clear(); cw2.mutable_candidates()->clear(); entry1.description_title = kSampleString1; entry2.description_title = kSampleString2; cw1.mutable_candidates()->push_back(entry1); cw2.mutable_candidates()->push_back(entry2); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw1.mutable_candidates()->clear(); cw2.mutable_candidates()->clear(); entry1.description_body = kSampleString1; entry2.description_body = kSampleString2; cw1.mutable_candidates()->push_back(entry1); cw2.mutable_candidates()->push_back(entry2); EXPECT_FALSE(cw1.IsEqual(cw2)); EXPECT_FALSE(cw2.IsEqual(cw1)); cw1.mutable_candidates()->clear(); cw2.mutable_candidates()->clear(); } TEST(CandidateWindow, CopyFromTest) { CandidateWindow cw1; CandidateWindow cw2; const char kSampleString[] = "Sample"; cw1.set_page_size(1); cw1.set_cursor_position(2); cw1.set_is_cursor_visible(false); cw1.set_orientation(CandidateWindow::HORIZONTAL); cw1.set_show_window_at_composition(false); CandidateWindow::Entry entry; entry.value = kSampleString; entry.label = kSampleString; entry.annotation = kSampleString; entry.description_title = kSampleString; entry.description_body = kSampleString; cw1.mutable_candidates()->push_back(entry); cw2.CopyFrom(cw1); EXPECT_TRUE(cw1.IsEqual(cw2)); } } // namespace input_method } // namespace chromeos