Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: base/wide_string_piece_unittest.cc

Issue 7549003: Optimize phishing page term feature extraction. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 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/wide_string_piece.h"
6
7 #include "base/logging.h"
8 #include "base/string16.h"
9 #include "base/utf_string_conversions.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace base {
13
14 TEST(WideStringPieceTest, CheckComparisonOperators) {
15 #define CMP_Y(op, x, y) \
Paweł Hajdan Jr. 2011/08/02 17:10:33 Why do we need those? Gtest makes it possible to d
Garrett Casto 2011/08/02 21:52:28 This was because I copied the meat of this test fr
16 ASSERT_TRUE( (WideStringPiece((x)) op WideStringPiece((y)))); \
17
18 #define CMP_N(op, x, y) \
19 ASSERT_FALSE(WideStringPiece((x)) op WideStringPiece((y))); \
20
21 CMP_Y(==, ASCIIToUTF16(""), ASCIIToUTF16(""));
22 CMP_Y(==, ASCIIToUTF16("a"), ASCIIToUTF16("a"));
23 CMP_Y(==, ASCIIToUTF16("aa"), ASCIIToUTF16("aa"));
24 CMP_N(==, ASCIIToUTF16("a"), ASCIIToUTF16(""));
25 CMP_N(==, ASCIIToUTF16(""), ASCIIToUTF16("a"));
26 CMP_N(==, ASCIIToUTF16("a"), ASCIIToUTF16("b"));
27 CMP_N(==, ASCIIToUTF16("a"), ASCIIToUTF16("aa"));
28 CMP_N(==, ASCIIToUTF16("aa"), ASCIIToUTF16("a"));
29
30 CMP_N(!=, ASCIIToUTF16(""), ASCIIToUTF16(""));
31 CMP_N(!=, ASCIIToUTF16("a"), ASCIIToUTF16("a"));
32 CMP_N(!=, ASCIIToUTF16("aa"), ASCIIToUTF16("aa"));
33 CMP_Y(!=, ASCIIToUTF16("a"), ASCIIToUTF16(""));
34 CMP_Y(!=, ASCIIToUTF16(""), ASCIIToUTF16("a"));
35 CMP_Y(!=, ASCIIToUTF16("a"), ASCIIToUTF16("b"));
36 CMP_Y(!=, ASCIIToUTF16("a"), ASCIIToUTF16("aa"));
37 CMP_Y(!=, ASCIIToUTF16("aa"), ASCIIToUTF16("a"));
38
39 CMP_Y(<, ASCIIToUTF16("a"), ASCIIToUTF16("b"));
40 CMP_Y(<, ASCIIToUTF16("a"), ASCIIToUTF16("aa"));
41 CMP_Y(<, ASCIIToUTF16("aa"), ASCIIToUTF16("b"));
42 CMP_Y(<, ASCIIToUTF16("aa"), ASCIIToUTF16("bb"));
43 CMP_N(<, ASCIIToUTF16("a"), ASCIIToUTF16("a"));
44 CMP_N(<, ASCIIToUTF16("b"), ASCIIToUTF16("a"));
45 CMP_N(<, ASCIIToUTF16("aa"), ASCIIToUTF16("a"));
46 CMP_N(<, ASCIIToUTF16("b"), ASCIIToUTF16("aa"));
47 CMP_N(<, ASCIIToUTF16("bb"), ASCIIToUTF16("aa"));
48
49 CMP_Y(<=, ASCIIToUTF16("a"), ASCIIToUTF16("a"));
50 CMP_Y(<=, ASCIIToUTF16("a"), ASCIIToUTF16("b"));
51 CMP_Y(<=, ASCIIToUTF16("a"), ASCIIToUTF16("aa"));
52 CMP_Y(<=, ASCIIToUTF16("aa"), ASCIIToUTF16("b"));
53 CMP_Y(<=, ASCIIToUTF16("aa"), ASCIIToUTF16("bb"));
54 CMP_N(<=, ASCIIToUTF16("b"), ASCIIToUTF16("a"));
55 CMP_N(<=, ASCIIToUTF16("aa"), ASCIIToUTF16("a"));
56 CMP_N(<=, ASCIIToUTF16("b"), ASCIIToUTF16("aa"));
57 CMP_N(<=, ASCIIToUTF16("bb"), ASCIIToUTF16("aa"));
58
59 CMP_N(>=, ASCIIToUTF16("a"), ASCIIToUTF16("b"));
60 CMP_N(>=, ASCIIToUTF16("a"), ASCIIToUTF16("aa"));
61 CMP_N(>=, ASCIIToUTF16("aa"), ASCIIToUTF16("b"));
62 CMP_N(>=, ASCIIToUTF16("aa"), ASCIIToUTF16("bb"));
63 CMP_Y(>=, ASCIIToUTF16("a"), ASCIIToUTF16("a"));
64 CMP_Y(>=, ASCIIToUTF16("b"), ASCIIToUTF16("a"));
65 CMP_Y(>=, ASCIIToUTF16("aa"), ASCIIToUTF16("a"));
66 CMP_Y(>=, ASCIIToUTF16("b"), ASCIIToUTF16("aa"));
67 CMP_Y(>=, ASCIIToUTF16("bb"), ASCIIToUTF16("aa"));
68
69 CMP_N(>, ASCIIToUTF16("a"), ASCIIToUTF16("a"));
70 CMP_N(>, ASCIIToUTF16("a"), ASCIIToUTF16("b"));
71 CMP_N(>, ASCIIToUTF16("a"), ASCIIToUTF16("aa"));
72 CMP_N(>, ASCIIToUTF16("aa"), ASCIIToUTF16("b"));
73 CMP_N(>, ASCIIToUTF16("aa"), ASCIIToUTF16("bb"));
74 CMP_Y(>, ASCIIToUTF16("b"), ASCIIToUTF16("a"));
75 CMP_Y(>, ASCIIToUTF16("aa"), ASCIIToUTF16("a"));
76 CMP_Y(>, ASCIIToUTF16("b"), ASCIIToUTF16("aa"));
77 CMP_Y(>, ASCIIToUTF16("bb"), ASCIIToUTF16("aa"));
78
79 string16 x;
80 for (int i = 0; i < 256; i++) {
81 x += 'a';
82 string16 y = x;
83 CMP_Y(==, x, y);
84 for (int j = 0; j < i; j++) {
85 string16 z = x;
86 z[j] = 'b'; // Differs in position 'j'
87 CMP_N(==, x, z);
88 }
89 }
90
91 #undef CMP_Y
92 #undef CMP_N
93 }
94
95 TEST(WideStringPieceTest, CheckSTL) {
96 string16 first = ASCIIToUTF16("abcdefghijklmnopqrstuvwxyz");
97 WideStringPiece a(first);
98 string16 second = ASCIIToUTF16("abc");
99 WideStringPiece b(second.c_str());
100 string16 third = ASCIIToUTF16("xyz");
101 WideStringPiece c(third.c_str(), third.size());
102 string16 fourth = ASCIIToUTF16("foobarrandomstuff");
103 WideStringPiece d(fourth.c_str(), 6);
104 WideStringPiece e;
105 // Check some non-ascii characters.
106 string16 fifth(ASCIIToUTF16("123"));
107 fifth.push_back(0x0000);
108 fifth.push_back(0xd8c5);
109 fifth.push_back(0xdffe);
110 WideStringPiece f(fifth);
111
112 ASSERT_EQ(a[6], 'g');
113 ASSERT_EQ(b[0], 'a');
114 ASSERT_EQ(c[2], 'z');
115 ASSERT_EQ(f[3], '\0');
116 ASSERT_EQ(f[5], static_cast<char16>(0xdffe));
117
118 ASSERT_EQ(*d.data(), 'f');
119 ASSERT_EQ(d.data()[5], 'r');
120 ASSERT_TRUE(e.data() == NULL);
121
122 ASSERT_EQ(*a.begin(), 'a');
123 ASSERT_EQ(*(b.begin() + 2), 'c');
124 ASSERT_EQ(*(c.end() - 1), 'z');
125
126 ASSERT_EQ(*a.rbegin(), 'z');
127 ASSERT_EQ(*(b.rbegin() + 2), 'a');
128 ASSERT_EQ(*(c.rend() - 1), 'x');
129 ASSERT_TRUE(a.rbegin() + 26 == a.rend());
130
131 ASSERT_EQ(a.size(), 26U);
132 ASSERT_EQ(b.size(), 3U);
133 ASSERT_EQ(c.size(), 3U);
134 ASSERT_EQ(d.size(), 6U);
135 ASSERT_EQ(e.size(), 0U);
136 ASSERT_EQ(f.size(), 6U);
137
138 ASSERT_TRUE(!d.empty());
139 ASSERT_TRUE(d.begin() != d.end());
140 ASSERT_TRUE(d.begin() + 6 == d.end());
141
142 ASSERT_TRUE(e.empty());
143 ASSERT_TRUE(e.begin() == e.end());
144
145 d.clear();
146 ASSERT_EQ(d.size(), 0U);
147 ASSERT_TRUE(d.empty());
148 ASSERT_TRUE(d.data() == NULL);
149 ASSERT_TRUE(d.begin() == d.end());
150
151 ASSERT_GE(a.max_size(), a.capacity());
152 ASSERT_GE(a.capacity(), a.size());
153 }
154
155 TEST(WideStringPieceTest, CheckNULL) {
156 WideStringPiece s(NULL);
157 ASSERT_EQ(s.data(), (const char16*)NULL);
158 ASSERT_EQ(s.size(), 0U);
159
160 s.set(NULL);
161 ASSERT_EQ(s.data(), (const char16*)NULL);
162 ASSERT_EQ(s.size(), 0U);
163
164 string16 str = s.as_string16();
165 ASSERT_EQ(s.data(), (const char16*)NULL);
166 ASSERT_EQ(s.size(), 0U);
167 }
168
169 TEST(WideStringPieceTest, HeterogenousStringPieceEquals) {
170 ASSERT_TRUE(WideStringPiece(ASCIIToUTF16("hello")) == ASCIIToUTF16("hello"));
171 }
172
173 TEST(WideStringPieceTest, CheckConversion) {
174 // Make sure that we can convert from UTF8 to UTF16 and back. We use a two
175 // byte character (G clef) to test this.
176 ASSERT_EQ(
177 UTF16ToUTF8(WideStringPiece(UTF8ToUTF16("\u1d11e")).as_string16()),
178 "\u1d11e");
179 }
180
181 } // namespace base
OLDNEW
« no previous file with comments | « base/wide_string_piece.h ('k') | chrome/renderer/safe_browsing/phishing_term_feature_extractor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698