OLD | NEW |
| (Empty) |
1 // Copyright (c) 2010 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 "base/i18n/word_iterator.h" | |
6 | |
7 #include "base/string_piece.h" | |
8 #include "base/string_util.h" | |
9 #include "base/utf_string_conversions.h" | |
10 #include "testing/gtest/include/gtest/gtest.h" | |
11 | |
12 TEST(WordIteratorTest, BreakWord) { | |
13 string16 space(UTF8ToUTF16(" ")); | |
14 | |
15 string16 str(UTF8ToUTF16(" foo bar! \npouet boom")); | |
16 WordIterator iter(&str, WordIterator::BREAK_WORD); | |
17 ASSERT_TRUE(iter.Init()); | |
18 EXPECT_TRUE(iter.Advance()); | |
19 EXPECT_FALSE(iter.IsWord()); | |
20 EXPECT_EQ(space, iter.GetWord()); | |
21 EXPECT_TRUE(iter.Advance()); | |
22 EXPECT_TRUE(iter.IsWord()); | |
23 EXPECT_EQ(UTF8ToUTF16("foo"), iter.GetWord()); | |
24 EXPECT_TRUE(iter.Advance()); | |
25 EXPECT_FALSE(iter.IsWord()); | |
26 EXPECT_EQ(space, iter.GetWord()); | |
27 EXPECT_TRUE(iter.Advance()); | |
28 EXPECT_TRUE(iter.IsWord()); | |
29 EXPECT_EQ(UTF8ToUTF16("bar"), iter.GetWord()); | |
30 EXPECT_TRUE(iter.Advance()); | |
31 EXPECT_FALSE(iter.IsWord()); | |
32 EXPECT_EQ(UTF8ToUTF16("!"), iter.GetWord()); | |
33 EXPECT_TRUE(iter.Advance()); | |
34 EXPECT_FALSE(iter.IsWord()); | |
35 EXPECT_EQ(space, iter.GetWord()); | |
36 EXPECT_TRUE(iter.Advance()); | |
37 EXPECT_FALSE(iter.IsWord()); | |
38 EXPECT_EQ(UTF8ToUTF16("\n"), iter.GetWord()); | |
39 EXPECT_TRUE(iter.Advance()); | |
40 EXPECT_TRUE(iter.IsWord()); | |
41 EXPECT_EQ(UTF8ToUTF16("pouet"), iter.GetWord()); | |
42 EXPECT_TRUE(iter.Advance()); | |
43 EXPECT_FALSE(iter.IsWord()); | |
44 EXPECT_EQ(space, iter.GetWord()); | |
45 EXPECT_TRUE(iter.Advance()); | |
46 EXPECT_TRUE(iter.IsWord()); | |
47 EXPECT_EQ(UTF8ToUTF16("boom"), iter.GetWord()); | |
48 EXPECT_FALSE(iter.Advance()); | |
49 EXPECT_FALSE(iter.IsWord()); | |
50 } | |
51 | |
52 TEST(WordIteratorTest, BreakLine) { | |
53 string16 str(UTF8ToUTF16(" foo bar! \npouet boom")); | |
54 WordIterator iter(&str, WordIterator::BREAK_LINE); | |
55 ASSERT_TRUE(iter.Init()); | |
56 EXPECT_TRUE(iter.Advance()); | |
57 EXPECT_FALSE(iter.IsWord()); | |
58 EXPECT_EQ(UTF8ToUTF16(" "), iter.GetWord()); | |
59 EXPECT_TRUE(iter.Advance()); | |
60 EXPECT_FALSE(iter.IsWord()); | |
61 EXPECT_EQ(UTF8ToUTF16("foo "), iter.GetWord()); | |
62 EXPECT_TRUE(iter.Advance()); | |
63 EXPECT_TRUE(iter.IsWord()); | |
64 EXPECT_EQ(UTF8ToUTF16("bar! \n"), iter.GetWord()); | |
65 EXPECT_TRUE(iter.Advance()); | |
66 EXPECT_FALSE(iter.IsWord()); | |
67 EXPECT_EQ(UTF8ToUTF16("pouet "), iter.GetWord()); | |
68 EXPECT_TRUE(iter.Advance()); | |
69 EXPECT_FALSE(iter.IsWord()); | |
70 EXPECT_EQ(UTF8ToUTF16("boom"), iter.GetWord()); | |
71 EXPECT_FALSE(iter.Advance()); | |
72 EXPECT_FALSE(iter.IsWord()); | |
73 } | |
74 | |
75 TEST(WordIteratorTest, BreakWide16) { | |
76 // "Παγκόσμιος Ιστός" | |
77 const string16 str(WideToUTF16( | |
78 L"\x03a0\x03b1\x03b3\x03ba\x03cc\x03c3\x03bc\x03b9" | |
79 L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2")); | |
80 const string16 word1(str.substr(0, 10)); | |
81 const string16 word2(str.substr(11, 5)); | |
82 WordIterator iter(&str, WordIterator::BREAK_WORD); | |
83 ASSERT_TRUE(iter.Init()); | |
84 EXPECT_TRUE(iter.Advance()); | |
85 EXPECT_TRUE(iter.IsWord()); | |
86 EXPECT_EQ(word1, iter.GetWord()); | |
87 EXPECT_TRUE(iter.Advance()); | |
88 EXPECT_FALSE(iter.IsWord()); | |
89 EXPECT_EQ(UTF8ToUTF16(" "), iter.GetWord()); | |
90 EXPECT_TRUE(iter.Advance()); | |
91 EXPECT_TRUE(iter.IsWord()); | |
92 EXPECT_EQ(word2, iter.GetWord()); | |
93 EXPECT_FALSE(iter.Advance()); | |
94 EXPECT_FALSE(iter.IsWord()); | |
95 } | |
96 | |
97 TEST(WordIteratorTest, BreakWide32) { | |
98 // U+1D49C MATHEMATICAL SCRIPT CAPITAL A | |
99 const char* very_wide_char = "\xF0\x9D\x92\x9C"; | |
100 const string16 str( | |
101 UTF8ToUTF16(StringPrintf("%s a", very_wide_char))); | |
102 const string16 very_wide_word(str.substr(0, 2)); | |
103 | |
104 WordIterator iter(&str, WordIterator::BREAK_WORD); | |
105 ASSERT_TRUE(iter.Init()); | |
106 EXPECT_TRUE(iter.Advance()); | |
107 EXPECT_TRUE(iter.IsWord()); | |
108 EXPECT_EQ(very_wide_word, iter.GetWord()); | |
109 EXPECT_TRUE(iter.Advance()); | |
110 EXPECT_FALSE(iter.IsWord()); | |
111 EXPECT_EQ(UTF8ToUTF16(" "), iter.GetWord()); | |
112 EXPECT_TRUE(iter.Advance()); | |
113 EXPECT_TRUE(iter.IsWord()); | |
114 EXPECT_EQ(UTF8ToUTF16("a"), iter.GetWord()); | |
115 EXPECT_FALSE(iter.Advance()); | |
116 EXPECT_FALSE(iter.IsWord()); | |
117 } | |
OLD | NEW |