Implement nacl_irt_memory for non-sfi mode.
[chromium-blink-merge.git] / ui / base / ime / candidate_window_unittest.cc
blobc408f5f74a4324ce0379cccfd14ef77ebc8bc981
1 // Copyright 2014 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.
6 #include "ui/base/ime/candidate_window.h"
8 #include <string>
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"
15 namespace ui {
17 namespace {
19 const size_t kSampleCandidateSize = 3;
20 const char* kSampleCandidate[] = {
21 "Sample Candidate 1",
22 "Sample Candidate 2",
23 "Sample Candidate 3",
25 const char* kSampleDescriptionTitle[] = {
26 "Sample Description Title 1",
27 "Sample Description Title 2",
28 "Sample Description Title 3",
30 const char* kSampleDescriptionBody[] = {
31 "Sample Description Body 1",
32 "Sample Description Body 2",
33 "Sample Description Body 3",
38 TEST(CandidateWindow, IsEqualTest) {
39 CandidateWindow cw1;
40 CandidateWindow cw2;
42 const char kSampleString1[] = "Sample 1";
43 const char kSampleString2[] = "Sample 2";
45 EXPECT_TRUE(cw1.IsEqual(cw2));
46 EXPECT_TRUE(cw2.IsEqual(cw1));
48 cw1.set_page_size(1);
49 cw2.set_page_size(2);
50 EXPECT_FALSE(cw1.IsEqual(cw2));
51 EXPECT_FALSE(cw2.IsEqual(cw1));
52 cw2.set_page_size(1);
54 cw1.set_cursor_position(1);
55 cw2.set_cursor_position(2);
56 EXPECT_FALSE(cw1.IsEqual(cw2));
57 EXPECT_FALSE(cw2.IsEqual(cw1));
58 cw2.set_cursor_position(1);
60 cw1.set_is_cursor_visible(true);
61 cw2.set_is_cursor_visible(false);
62 EXPECT_FALSE(cw1.IsEqual(cw2));
63 EXPECT_FALSE(cw2.IsEqual(cw1));
64 cw2.set_is_cursor_visible(true);
66 cw1.set_orientation(CandidateWindow::HORIZONTAL);
67 cw2.set_orientation(CandidateWindow::VERTICAL);
68 EXPECT_FALSE(cw1.IsEqual(cw2));
69 EXPECT_FALSE(cw2.IsEqual(cw1));
70 cw2.set_orientation(CandidateWindow::HORIZONTAL);
72 cw1.set_show_window_at_composition(true);
73 cw2.set_show_window_at_composition(false);
74 EXPECT_FALSE(cw1.IsEqual(cw2));
75 EXPECT_FALSE(cw2.IsEqual(cw1));
76 cw2.set_show_window_at_composition(true);
78 // Check equality for candidates member variable.
79 CandidateWindow::Entry entry1;
80 CandidateWindow::Entry entry2;
82 cw1.mutable_candidates()->push_back(entry1);
83 EXPECT_FALSE(cw1.IsEqual(cw2));
84 EXPECT_FALSE(cw2.IsEqual(cw1));
85 cw2.mutable_candidates()->push_back(entry2);
86 EXPECT_TRUE(cw1.IsEqual(cw2));
87 EXPECT_TRUE(cw2.IsEqual(cw1));
89 entry1.value = kSampleString1;
90 entry2.value = kSampleString2;
91 cw1.mutable_candidates()->push_back(entry1);
92 cw2.mutable_candidates()->push_back(entry2);
93 EXPECT_FALSE(cw1.IsEqual(cw2));
94 EXPECT_FALSE(cw2.IsEqual(cw1));
95 cw1.mutable_candidates()->clear();
96 cw2.mutable_candidates()->clear();
98 entry1.label = kSampleString1;
99 entry2.label = kSampleString2;
100 cw1.mutable_candidates()->push_back(entry1);
101 cw2.mutable_candidates()->push_back(entry2);
102 EXPECT_FALSE(cw1.IsEqual(cw2));
103 EXPECT_FALSE(cw2.IsEqual(cw1));
104 cw1.mutable_candidates()->clear();
105 cw2.mutable_candidates()->clear();
107 entry1.annotation = kSampleString1;
108 entry2.annotation = kSampleString2;
109 cw1.mutable_candidates()->push_back(entry1);
110 cw2.mutable_candidates()->push_back(entry2);
111 EXPECT_FALSE(cw1.IsEqual(cw2));
112 EXPECT_FALSE(cw2.IsEqual(cw1));
113 cw1.mutable_candidates()->clear();
114 cw2.mutable_candidates()->clear();
116 entry1.description_title = kSampleString1;
117 entry2.description_title = kSampleString2;
118 cw1.mutable_candidates()->push_back(entry1);
119 cw2.mutable_candidates()->push_back(entry2);
120 EXPECT_FALSE(cw1.IsEqual(cw2));
121 EXPECT_FALSE(cw2.IsEqual(cw1));
122 cw1.mutable_candidates()->clear();
123 cw2.mutable_candidates()->clear();
125 entry1.description_body = kSampleString1;
126 entry2.description_body = kSampleString2;
127 cw1.mutable_candidates()->push_back(entry1);
128 cw2.mutable_candidates()->push_back(entry2);
129 EXPECT_FALSE(cw1.IsEqual(cw2));
130 EXPECT_FALSE(cw2.IsEqual(cw1));
131 cw1.mutable_candidates()->clear();
132 cw2.mutable_candidates()->clear();
135 TEST(CandidateWindow, CopyFromTest) {
136 CandidateWindow cw1;
137 CandidateWindow cw2;
139 const char kSampleString[] = "Sample";
141 cw1.set_page_size(1);
142 cw1.set_cursor_position(2);
143 cw1.set_is_cursor_visible(false);
144 cw1.set_orientation(CandidateWindow::HORIZONTAL);
145 cw1.set_show_window_at_composition(false);
147 CandidateWindow::Entry entry;
148 entry.value = kSampleString;
149 entry.label = kSampleString;
150 entry.annotation = kSampleString;
151 entry.description_title = kSampleString;
152 entry.description_body = kSampleString;
153 cw1.mutable_candidates()->push_back(entry);
155 cw2.CopyFrom(cw1);
156 EXPECT_TRUE(cw1.IsEqual(cw2));
159 TEST(CandidateWindow, GetInfolistEntries_DenseCase) {
160 CandidateWindow candidate_window;
161 candidate_window.set_page_size(10);
162 for (size_t i = 0; i < kSampleCandidateSize; ++i) {
163 CandidateWindow::Entry entry;
164 entry.value = kSampleCandidate[i];
165 entry.description_title = kSampleDescriptionTitle[i];
166 entry.description_body = kSampleDescriptionBody[i];
167 candidate_window.mutable_candidates()->push_back(entry);
169 candidate_window.set_cursor_position(1);
171 std::vector<InfolistEntry> infolist_entries;
172 bool has_highlighted = false;
174 candidate_window.GetInfolistEntries(&infolist_entries, &has_highlighted);
176 EXPECT_EQ(kSampleCandidateSize, infolist_entries.size());
177 EXPECT_TRUE(has_highlighted);
178 EXPECT_TRUE(infolist_entries[1].highlighted);
181 TEST(CandidateWindow, GetInfolistEntries_SparseCase) {
182 CandidateWindow candidate_window;
183 candidate_window.set_page_size(10);
184 for (size_t i = 0; i < kSampleCandidateSize; ++i) {
185 CandidateWindow::Entry entry;
186 entry.value = kSampleCandidate[i];
187 candidate_window.mutable_candidates()->push_back(entry);
190 std::vector<CandidateWindow::Entry>* candidates =
191 candidate_window.mutable_candidates();
192 (*candidates)[2].description_title = kSampleDescriptionTitle[2];
193 (*candidates)[2].description_body = kSampleDescriptionBody[2];
195 candidate_window.set_cursor_position(2);
197 std::vector<InfolistEntry> infolist_entries;
198 bool has_highlighted = false;
200 candidate_window.GetInfolistEntries(&infolist_entries, &has_highlighted);
202 // Infolist entries skips empty descriptions, so expected entry size is 1.
203 EXPECT_EQ(1UL, infolist_entries.size());
204 EXPECT_TRUE(has_highlighted);
205 EXPECT_TRUE(infolist_entries[0].highlighted);
208 TEST(CandidateWindow, GetInfolistEntries_SparseNoSelectionCase) {
209 CandidateWindow candidate_window;
210 candidate_window.set_page_size(10);
212 for (size_t i = 0; i < kSampleCandidateSize; ++i) {
213 CandidateWindow::Entry entry;
214 entry.value = kSampleCandidate[i];
215 candidate_window.mutable_candidates()->push_back(entry);
218 std::vector<CandidateWindow::Entry>* candidates =
219 candidate_window.mutable_candidates();
220 (*candidates)[2].description_title = kSampleDescriptionTitle[2];
221 (*candidates)[2].description_body = kSampleDescriptionBody[2];
223 candidate_window.set_cursor_position(0);
225 std::vector<InfolistEntry> infolist_entries;
226 bool has_highlighted;
228 candidate_window.GetInfolistEntries(&infolist_entries, &has_highlighted);
230 // Infolist entries skips empty descriptions, so expected entry size is 1 and
231 // no highlighted entries.
232 EXPECT_EQ(1UL, infolist_entries.size());
233 EXPECT_FALSE(has_highlighted);
234 EXPECT_FALSE(infolist_entries[0].highlighted);
237 TEST(CandidateWindow, GetInfolistEntries_NoInfolistCase) {
238 CandidateWindow candidate_window;
239 candidate_window.set_page_size(10);
241 for (size_t i = 0; i < kSampleCandidateSize; ++i) {
242 CandidateWindow::Entry entry;
243 entry.value = kSampleCandidate[i];
244 candidate_window.mutable_candidates()->push_back(entry);
246 candidate_window.set_cursor_position(1);
248 std::vector<InfolistEntry> infolist_entries;
249 bool has_highlighted = false;
251 candidate_window.GetInfolistEntries(&infolist_entries, &has_highlighted);
253 EXPECT_TRUE(infolist_entries.empty());
254 EXPECT_FALSE(has_highlighted);
257 } // namespace ui