Home | History | Annotate | Download | only in search
      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 
      5 #include "chrome/browser/ui/app_list/search/term_break_iterator.h"
      6 
      7 #include "base/strings/utf_string_conversions.h"
      8 #include "testing/gtest/include/gtest/gtest.h"
      9 
     10 namespace app_list {
     11 namespace test {
     12 
     13 TEST(TermBreakIteratorTest, EmptyWord) {
     14   string16 empty;
     15   TermBreakIterator iter(empty);
     16   EXPECT_FALSE(iter.Advance());
     17 }
     18 
     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.
     25 }
     26 
     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.
     35 }
     36 
     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.
     47 }
     48 
     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.
     57 }
     58 
     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.
     71 }
     72 
     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.
     84 }
     85 
     86 }  // namespace test
     87 }  // namespace app_list
     88