15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// TODO(nona): Add more tests. 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/base/ime/candidate_window.h" 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <string> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/compiler_specific.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/logging.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ui { 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace { 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const size_t kSampleCandidateSize = 3; 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char* kSampleCandidate[] = { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Candidate 1", 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Candidate 2", 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Candidate 3", 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char* kSampleDescriptionTitle[] = { 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Title 1", 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Title 2", 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Title 3", 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const char* kSampleDescriptionBody[] = { 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Body 1", 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Body 2", 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) "Sample Description Body 3", 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(CandidateWindow, IsEqualTest) { 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow cw1; 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow cw2; 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleString1 = base::UTF8ToUTF16("Sample 1"); 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleString2 = base::UTF8ToUTF16("Sample 2"); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(cw1.IsEqual(cw2)); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(cw2.IsEqual(cw1)); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_page_size(1); 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_page_size(2); 515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_page_size(1); 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_cursor_position(1); 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_cursor_position(2); 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_cursor_position(1); 605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_is_cursor_visible(true); 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_is_cursor_visible(false); 635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_is_cursor_visible(true); 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_orientation(CandidateWindow::HORIZONTAL); 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_orientation(CandidateWindow::VERTICAL); 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_orientation(CandidateWindow::HORIZONTAL); 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_show_window_at_composition(true); 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_show_window_at_composition(false); 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.set_show_window_at_composition(true); 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Check equality for candidates member variable. 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow::Entry entry1; 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow::Entry entry2; 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->push_back(entry1); 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->push_back(entry2); 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(cw1.IsEqual(cw2)); 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(cw2.IsEqual(cw1)); 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry1.value = kSampleString1; 915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry2.value = kSampleString2; 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->push_back(entry1); 935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->push_back(entry2); 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->clear(); 975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->clear(); 985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry1.label = kSampleString1; 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry2.label = kSampleString2; 1015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->push_back(entry1); 1025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->push_back(entry2); 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->clear(); 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->clear(); 1075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry1.annotation = kSampleString1; 1095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry2.annotation = kSampleString2; 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->push_back(entry1); 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->push_back(entry2); 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->clear(); 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->clear(); 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry1.description_title = kSampleString1; 1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry2.description_title = kSampleString2; 1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->push_back(entry1); 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->push_back(entry2); 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->clear(); 1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->clear(); 1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry1.description_body = kSampleString1; 1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry2.description_body = kSampleString2; 1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->push_back(entry1); 1295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->push_back(entry2); 1305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw1.IsEqual(cw2)); 1315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(cw2.IsEqual(cw1)); 1325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->clear(); 1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.mutable_candidates()->clear(); 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(CandidateWindow, CopyFromTest) { 1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow cw1; 1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow cw2; 1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const base::string16 kSampleString = base::UTF8ToUTF16("Sample"); 1415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_page_size(1); 1435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_cursor_position(2); 1445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_is_cursor_visible(false); 1455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_orientation(CandidateWindow::HORIZONTAL); 1465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.set_show_window_at_composition(false); 1475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow::Entry entry; 1495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = kSampleString; 1505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.label = kSampleString; 1515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.annotation = kSampleString; 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_title = kSampleString; 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_body = kSampleString; 1545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw1.mutable_candidates()->push_back(entry); 1555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cw2.CopyFrom(cw1); 1575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(cw1.IsEqual(cw2)); 1585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(CandidateWindow, GetInfolistEntries_DenseCase) { 1615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow candidate_window; 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_page_size(10); 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kSampleCandidateSize; ++i) { 1645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow::Entry entry; 1655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); 1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_title = base::UTF8ToUTF16(kSampleDescriptionTitle[i]); 1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.description_body = base::UTF8ToUTF16(kSampleDescriptionBody[i]); 1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_cursor_position(1); 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::vector<InfolistEntry> infolist_entries; 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool has_highlighted = false; 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.GetInfolistEntries(&infolist_entries, &has_highlighted); 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(kSampleCandidateSize, infolist_entries.size()); 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(has_highlighted); 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(infolist_entries[1].highlighted); 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(CandidateWindow, GetInfolistEntries_SparseCase) { 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow candidate_window; 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_page_size(10); 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kSampleCandidateSize; ++i) { 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow::Entry entry; 1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::vector<CandidateWindow::Entry>* candidates = 1925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates(); 1935d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) (*candidates)[2].description_title = 1945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF8ToUTF16(kSampleDescriptionTitle[2]); 1955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) (*candidates)[2].description_body = 1965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF8ToUTF16(kSampleDescriptionBody[2]); 1975d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1985d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_cursor_position(2); 1995d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::vector<InfolistEntry> infolist_entries; 2015d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool has_highlighted = false; 2025d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.GetInfolistEntries(&infolist_entries, &has_highlighted); 2045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Infolist entries skips empty descriptions, so expected entry size is 1. 2065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(1UL, infolist_entries.size()); 2075d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(has_highlighted); 2085d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(infolist_entries[0].highlighted); 2095d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 2105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(CandidateWindow, GetInfolistEntries_SparseNoSelectionCase) { 2125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow candidate_window; 2135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_page_size(10); 2145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kSampleCandidateSize; ++i) { 2165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow::Entry entry; 2175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); 2185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 2195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::vector<CandidateWindow::Entry>* candidates = 2225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates(); 2235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) (*candidates)[2].description_title = 2245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF8ToUTF16(kSampleDescriptionTitle[2]); 2255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) (*candidates)[2].description_body = 2265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::UTF8ToUTF16(kSampleDescriptionBody[2]); 2275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_cursor_position(0); 2295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::vector<InfolistEntry> infolist_entries; 2315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool has_highlighted; 2325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.GetInfolistEntries(&infolist_entries, &has_highlighted); 2345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Infolist entries skips empty descriptions, so expected entry size is 1 and 2365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // no highlighted entries. 2375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_EQ(1UL, infolist_entries.size()); 2385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(has_highlighted); 2395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(infolist_entries[0].highlighted); 2405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 2415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST(CandidateWindow, GetInfolistEntries_NoInfolistCase) { 2435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow candidate_window; 2445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_page_size(10); 2455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) for (size_t i = 0; i < kSampleCandidateSize; ++i) { 2475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CandidateWindow::Entry entry; 2485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) entry.value = base::UTF8ToUTF16(kSampleCandidate[i]); 2495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.mutable_candidates()->push_back(entry); 2505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 2515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.set_cursor_position(1); 2525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::vector<InfolistEntry> infolist_entries; 2545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool has_highlighted = false; 2555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) candidate_window.GetInfolistEntries(&infolist_entries, &has_highlighted); 2575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_TRUE(infolist_entries.empty()); 2595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) EXPECT_FALSE(has_highlighted); 2605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 2615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace ui 263