1// Copyright 2013 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// TODO(nona): Add more tests.
5
6#include "chromeos/ime/candidate_window.h"
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "base/logging.h"
12#include "base/memory/scoped_ptr.h"
13#include "testing/gtest/include/gtest/gtest.h"
14
15namespace chromeos {
16namespace input_method {
17
18TEST(CandidateWindow, IsEqualTest) {
19  CandidateWindow cw1;
20  CandidateWindow cw2;
21
22  const char kSampleString1[] = "Sample 1";
23  const char kSampleString2[] = "Sample 2";
24
25  EXPECT_TRUE(cw1.IsEqual(cw2));
26  EXPECT_TRUE(cw2.IsEqual(cw1));
27
28  cw1.set_page_size(1);
29  cw2.set_page_size(2);
30  EXPECT_FALSE(cw1.IsEqual(cw2));
31  EXPECT_FALSE(cw2.IsEqual(cw1));
32  cw2.set_page_size(1);
33
34  cw1.set_cursor_position(1);
35  cw2.set_cursor_position(2);
36  EXPECT_FALSE(cw1.IsEqual(cw2));
37  EXPECT_FALSE(cw2.IsEqual(cw1));
38  cw2.set_cursor_position(1);
39
40  cw1.set_is_cursor_visible(true);
41  cw2.set_is_cursor_visible(false);
42  EXPECT_FALSE(cw1.IsEqual(cw2));
43  EXPECT_FALSE(cw2.IsEqual(cw1));
44  cw2.set_is_cursor_visible(true);
45
46  cw1.set_orientation(CandidateWindow::HORIZONTAL);
47  cw2.set_orientation(CandidateWindow::VERTICAL);
48  EXPECT_FALSE(cw1.IsEqual(cw2));
49  EXPECT_FALSE(cw2.IsEqual(cw1));
50  cw2.set_orientation(CandidateWindow::HORIZONTAL);
51
52  cw1.set_show_window_at_composition(true);
53  cw2.set_show_window_at_composition(false);
54  EXPECT_FALSE(cw1.IsEqual(cw2));
55  EXPECT_FALSE(cw2.IsEqual(cw1));
56  cw2.set_show_window_at_composition(true);
57
58  // Check equality for candidates member variable.
59  CandidateWindow::Entry entry1;
60  CandidateWindow::Entry entry2;
61
62  cw1.mutable_candidates()->push_back(entry1);
63  EXPECT_FALSE(cw1.IsEqual(cw2));
64  EXPECT_FALSE(cw2.IsEqual(cw1));
65  cw2.mutable_candidates()->push_back(entry2);
66  EXPECT_TRUE(cw1.IsEqual(cw2));
67  EXPECT_TRUE(cw2.IsEqual(cw1));
68
69  entry1.value = kSampleString1;
70  entry2.value = kSampleString2;
71  cw1.mutable_candidates()->push_back(entry1);
72  cw2.mutable_candidates()->push_back(entry2);
73  EXPECT_FALSE(cw1.IsEqual(cw2));
74  EXPECT_FALSE(cw2.IsEqual(cw1));
75  cw1.mutable_candidates()->clear();
76  cw2.mutable_candidates()->clear();
77
78  entry1.label = kSampleString1;
79  entry2.label = kSampleString2;
80  cw1.mutable_candidates()->push_back(entry1);
81  cw2.mutable_candidates()->push_back(entry2);
82  EXPECT_FALSE(cw1.IsEqual(cw2));
83  EXPECT_FALSE(cw2.IsEqual(cw1));
84  cw1.mutable_candidates()->clear();
85  cw2.mutable_candidates()->clear();
86
87  entry1.annotation = kSampleString1;
88  entry2.annotation = kSampleString2;
89  cw1.mutable_candidates()->push_back(entry1);
90  cw2.mutable_candidates()->push_back(entry2);
91  EXPECT_FALSE(cw1.IsEqual(cw2));
92  EXPECT_FALSE(cw2.IsEqual(cw1));
93  cw1.mutable_candidates()->clear();
94  cw2.mutable_candidates()->clear();
95
96  entry1.description_title = kSampleString1;
97  entry2.description_title = kSampleString2;
98  cw1.mutable_candidates()->push_back(entry1);
99  cw2.mutable_candidates()->push_back(entry2);
100  EXPECT_FALSE(cw1.IsEqual(cw2));
101  EXPECT_FALSE(cw2.IsEqual(cw1));
102  cw1.mutable_candidates()->clear();
103  cw2.mutable_candidates()->clear();
104
105  entry1.description_body = kSampleString1;
106  entry2.description_body = kSampleString2;
107  cw1.mutable_candidates()->push_back(entry1);
108  cw2.mutable_candidates()->push_back(entry2);
109  EXPECT_FALSE(cw1.IsEqual(cw2));
110  EXPECT_FALSE(cw2.IsEqual(cw1));
111  cw1.mutable_candidates()->clear();
112  cw2.mutable_candidates()->clear();
113}
114
115TEST(CandidateWindow, CopyFromTest) {
116  CandidateWindow cw1;
117  CandidateWindow cw2;
118
119  const char kSampleString[] = "Sample";
120
121  cw1.set_page_size(1);
122  cw1.set_cursor_position(2);
123  cw1.set_is_cursor_visible(false);
124  cw1.set_orientation(CandidateWindow::HORIZONTAL);
125  cw1.set_show_window_at_composition(false);
126
127  CandidateWindow::Entry entry;
128  entry.value = kSampleString;
129  entry.label = kSampleString;
130  entry.annotation = kSampleString;
131  entry.description_title = kSampleString;
132  entry.description_body = kSampleString;
133  cw1.mutable_candidates()->push_back(entry);
134
135  cw2.CopyFrom(cw1);
136  EXPECT_TRUE(cw1.IsEqual(cw2));
137}
138
139}  // namespace input_method
140}  // namespace chromeos
141