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.
5 #include "chrome/browser/ui/app_list/search/term_break_iterator.h"
7 #include "base/strings/utf_string_conversions.h"
8 #include "testing/gtest/include/gtest/gtest.h"
13 TEST(TermBreakIteratorTest, EmptyWord) {
15 TermBreakIterator iter(empty);
16 EXPECT_FALSE(iter.Advance());
19 TEST(TermBreakIteratorTest, Simple) {
20 string16 word(UTF8ToUTF16("simple"));
21 TermBreakIterator iter(word);
22 EXPECT_TRUE(iter.Advance());
23 EXPECT_EQ(UTF8ToUTF16("simple"), iter.GetCurrentTerm());
24 EXPECT_FALSE(iter.Advance()); // Test unexpected advance after end.
27 TEST(TermBreakIteratorTest, CamelCase) {
28 string16 word(UTF8ToUTF16("CamelCase"));
29 TermBreakIterator iter(word);
30 EXPECT_TRUE(iter.Advance());
31 EXPECT_EQ(UTF8ToUTF16("Camel"), iter.GetCurrentTerm());
32 EXPECT_TRUE(iter.Advance());
33 EXPECT_EQ(UTF8ToUTF16("Case"), iter.GetCurrentTerm());
34 EXPECT_FALSE(iter.Advance()); // Test unexpected advance after end.
37 TEST(TermBreakIteratorTest, LowerToUpper) {
38 string16 word(UTF8ToUTF16("lowerToUpper"));
39 TermBreakIterator iter(word);
40 EXPECT_TRUE(iter.Advance());
41 EXPECT_EQ(UTF8ToUTF16("lower"), iter.GetCurrentTerm());
42 EXPECT_TRUE(iter.Advance());
43 EXPECT_EQ(UTF8ToUTF16("To"), iter.GetCurrentTerm());
44 EXPECT_TRUE(iter.Advance());
45 EXPECT_EQ(UTF8ToUTF16("Upper"), iter.GetCurrentTerm());
46 EXPECT_FALSE(iter.Advance()); // Test unexpected advance after end.
49 TEST(TermBreakIteratorTest, AlphaNumber) {
50 string16 word(UTF8ToUTF16("Chromium26.0.0.0"));
51 TermBreakIterator iter(word);
52 EXPECT_TRUE(iter.Advance());
53 EXPECT_EQ(UTF8ToUTF16("Chromium"), iter.GetCurrentTerm());
54 EXPECT_TRUE(iter.Advance());
55 EXPECT_EQ(UTF8ToUTF16("26.0.0.0"), iter.GetCurrentTerm());
56 EXPECT_FALSE(iter.Advance()); // Test unexpected advance after end.
59 TEST(TermBreakIteratorTest, StartsWithNumber) {
60 string16 word(UTF8ToUTF16("123startWithNumber"));
61 TermBreakIterator iter(word);
62 EXPECT_TRUE(iter.Advance());
63 EXPECT_EQ(UTF8ToUTF16("123"), iter.GetCurrentTerm());
64 EXPECT_TRUE(iter.Advance());
65 EXPECT_EQ(UTF8ToUTF16("start"), iter.GetCurrentTerm());
66 EXPECT_TRUE(iter.Advance());
67 EXPECT_EQ(UTF8ToUTF16("With"), iter.GetCurrentTerm());
68 EXPECT_TRUE(iter.Advance());
69 EXPECT_EQ(UTF8ToUTF16("Number"), iter.GetCurrentTerm());
70 EXPECT_FALSE(iter.Advance()); // Test unexpected advance after end.
73 TEST(TermBreakIteratorTest, CaseAndNoCase) {
74 // "English" + two Chinese chars U+4E2D U+6587 + "Word"
75 string16 word(UTF8ToUTF16("English\xe4\xb8\xad\xe6\x96\x87Word"));
76 TermBreakIterator iter(word);
77 EXPECT_TRUE(iter.Advance());
78 EXPECT_EQ(UTF8ToUTF16("English"), iter.GetCurrentTerm());
79 EXPECT_TRUE(iter.Advance());
80 EXPECT_EQ(UTF8ToUTF16("\xe4\xb8\xad\xe6\x96\x87"), iter.GetCurrentTerm());
81 EXPECT_TRUE(iter.Advance());
82 EXPECT_EQ(UTF8ToUTF16("Word"), iter.GetCurrentTerm());
83 EXPECT_FALSE(iter.Advance()); // Test unexpected advance after end.
87 } // namespace app_list