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

Side by Side Diff: Source/wtf/StringHasherTest.cpp

Issue 328453003: Refactor to remove unnecessary code from the string hashing functions (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix the unit tests Created 6 years, 6 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
« no previous file with comments | « Source/wtf/StringHasher.h ('k') | Source/wtf/text/AtomicString.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2013 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 // Hashing zero characters. 115 // Hashing zero characters.
116 hasher = StringHasher(); 116 hasher = StringHasher();
117 hasher.addCharacters(static_cast<LChar*>(0), 0); 117 hasher.addCharacters(static_cast<LChar*>(0), 0);
118 EXPECT_EQ(emptyStringHash, hasher.hash()); 118 EXPECT_EQ(emptyStringHash, hasher.hash());
119 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 119 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
120 hasher = StringHasher(); 120 hasher = StringHasher();
121 hasher.addCharacters(nullLChars, 0); 121 hasher.addCharacters(nullLChars, 0);
122 EXPECT_EQ(emptyStringHash, hasher.hash()); 122 EXPECT_EQ(emptyStringHash, hasher.hash());
123 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 123 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
124 hasher = StringHasher(); 124 hasher = StringHasher();
125 hasher.addCharacters(nullLChars);
126 EXPECT_EQ(emptyStringHash, hasher.hash());
127 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
128 hasher = StringHasher();
129 hasher.addCharacters(static_cast<UChar*>(0), 0); 125 hasher.addCharacters(static_cast<UChar*>(0), 0);
130 EXPECT_EQ(emptyStringHash, hasher.hash()); 126 EXPECT_EQ(emptyStringHash, hasher.hash());
131 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 127 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
132 hasher = StringHasher(); 128 hasher = StringHasher();
133 hasher.addCharacters(nullUChars, 0); 129 hasher.addCharacters(nullUChars, 0);
134 EXPECT_EQ(emptyStringHash, hasher.hash()); 130 EXPECT_EQ(emptyStringHash, hasher.hash());
135 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 131 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
136 hasher = StringHasher();
137 hasher.addCharacters(nullUChars);
138 EXPECT_EQ(emptyStringHash, hasher.hash());
139 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
140 132
141 // Hashing one character. 133 // Hashing one character.
142 hasher = StringHasher(); 134 hasher = StringHasher();
143 hasher.addCharacters(nullLChars, 1); 135 hasher.addCharacters(nullLChars, 1);
144 EXPECT_EQ(singleNullCharacterHash, hasher.hash()); 136 EXPECT_EQ(singleNullCharacterHash, hasher.hash());
145 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked( )); 137 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked( ));
146 hasher = StringHasher(); 138 hasher = StringHasher();
147 hasher.addCharacters(nullUChars, 1); 139 hasher.addCharacters(nullUChars, 1);
148 EXPECT_EQ(singleNullCharacterHash, hasher.hash()); 140 EXPECT_EQ(singleNullCharacterHash, hasher.hash());
149 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked( )); 141 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked( ));
150 142
151 // Hashing five characters, all at once. 143 // Hashing five characters, all at once.
152 hasher = StringHasher(); 144 hasher = StringHasher();
153 hasher.addCharacters(testALChars, 5); 145 hasher.addCharacters(testALChars, 5);
154 EXPECT_EQ(testAHash5, hasher.hash()); 146 EXPECT_EQ(testAHash5, hasher.hash());
155 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 147 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
156 hasher = StringHasher(); 148 hasher = StringHasher();
157 hasher.addCharacters(testALChars);
158 EXPECT_EQ(testAHash5, hasher.hash());
159 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
160 hasher = StringHasher();
161 hasher.addCharacters(testAUChars, 5); 149 hasher.addCharacters(testAUChars, 5);
162 EXPECT_EQ(testAHash5, hasher.hash()); 150 EXPECT_EQ(testAHash5, hasher.hash());
163 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 151 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
164 hasher = StringHasher(); 152 hasher = StringHasher();
165 hasher.addCharacters(testAUChars);
166 EXPECT_EQ(testAHash5, hasher.hash());
167 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
168 hasher = StringHasher();
169 hasher.addCharacters(testBUChars, 5); 153 hasher.addCharacters(testBUChars, 5);
170 EXPECT_EQ(testBHash5, hasher.hash()); 154 EXPECT_EQ(testBHash5, hasher.hash());
171 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 155 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
172 hasher = StringHasher();
173 hasher.addCharacters(testBUChars);
174 EXPECT_EQ(testBHash5, hasher.hash());
175 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
176 156
177 // Hashing five characters, in groups of two, then the last one. 157 // Hashing five characters, in groups of two, then the last one.
178 hasher = StringHasher(); 158 hasher = StringHasher();
179 hasher.addCharacters(testALChars, 2); 159 hasher.addCharacters(testALChars, 2);
180 EXPECT_EQ(testAHash2, hasher.hash()); 160 EXPECT_EQ(testAHash2, hasher.hash());
181 EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 161 EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
182 hasher.addCharacters(testALChars + 2, 2); 162 hasher.addCharacters(testALChars + 2, 2);
183 EXPECT_EQ(testAHash4, hasher.hash()); 163 EXPECT_EQ(testAHash4, hasher.hash());
184 EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 164 EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
185 hasher.addCharacters(testALChars + 4, 1); 165 hasher.addCharacters(testALChars + 4, 1);
186 EXPECT_EQ(testAHash5, hasher.hash()); 166 EXPECT_EQ(testAHash5, hasher.hash());
187 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 167 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
188 hasher = StringHasher(); 168 hasher = StringHasher();
189 hasher.addCharacters(testALChars, 2); 169 hasher.addCharacters(testALChars, 2);
190 hasher.addCharacters(testALChars + 2, 2); 170 hasher.addCharacters(testALChars + 2, 2);
191 hasher.addCharacters(testALChars + 4); 171 hasher.addCharacters(testALChars + 4, 1);
192 EXPECT_EQ(testAHash5, hasher.hash()); 172 EXPECT_EQ(testAHash5, hasher.hash());
193 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 173 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
194 hasher = StringHasher(); 174 hasher = StringHasher();
195 hasher.addCharacters(testAUChars, 2); 175 hasher.addCharacters(testAUChars, 2);
196 EXPECT_EQ(testAHash2, hasher.hash()); 176 EXPECT_EQ(testAHash2, hasher.hash());
197 EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 177 EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
198 hasher.addCharacters(testAUChars + 2, 2); 178 hasher.addCharacters(testAUChars + 2, 2);
199 EXPECT_EQ(testAHash4, hasher.hash()); 179 EXPECT_EQ(testAHash4, hasher.hash());
200 EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 180 EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
201 hasher.addCharacters(testAUChars + 4, 1); 181 hasher.addCharacters(testAUChars + 4, 1);
202 EXPECT_EQ(testAHash5, hasher.hash()); 182 EXPECT_EQ(testAHash5, hasher.hash());
203 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 183 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
204 hasher = StringHasher(); 184 hasher = StringHasher();
205 hasher.addCharacters(testAUChars, 2); 185 hasher.addCharacters(testAUChars, 2);
206 hasher.addCharacters(testAUChars + 2, 2); 186 hasher.addCharacters(testAUChars + 2, 2);
207 hasher.addCharacters(testAUChars + 4); 187 hasher.addCharacters(testAUChars + 4, 1);
208 EXPECT_EQ(testAHash5, hasher.hash()); 188 EXPECT_EQ(testAHash5, hasher.hash());
209 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 189 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
210 hasher = StringHasher(); 190 hasher = StringHasher();
211 hasher.addCharacters(testBUChars, 2); 191 hasher.addCharacters(testBUChars, 2);
212 EXPECT_EQ(testBHash2, hasher.hash()); 192 EXPECT_EQ(testBHash2, hasher.hash());
213 EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 193 EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
214 hasher.addCharacters(testBUChars + 2, 2); 194 hasher.addCharacters(testBUChars + 2, 2);
215 EXPECT_EQ(testBHash4, hasher.hash()); 195 EXPECT_EQ(testBHash4, hasher.hash());
216 EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 196 EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
217 hasher.addCharacters(testBUChars + 4, 1); 197 hasher.addCharacters(testBUChars + 4, 1);
218 EXPECT_EQ(testBHash5, hasher.hash()); 198 EXPECT_EQ(testBHash5, hasher.hash());
219 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 199 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
220 hasher = StringHasher(); 200 hasher = StringHasher();
221 hasher.addCharacters(testBUChars, 2); 201 hasher.addCharacters(testBUChars, 2);
222 hasher.addCharacters(testBUChars + 2, 2); 202 hasher.addCharacters(testBUChars + 2, 2);
223 hasher.addCharacters(testBUChars + 4); 203 hasher.addCharacters(testBUChars + 4, 1);
224 EXPECT_EQ(testBHash5, hasher.hash()); 204 EXPECT_EQ(testBHash5, hasher.hash());
225 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 205 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
226 206
227 // Hashing five characters, the first three, then the last two. 207 // Hashing five characters, the first three, then the last two.
228 hasher = StringHasher(); 208 hasher = StringHasher();
229 hasher.addCharacters(testALChars, 3); 209 hasher.addCharacters(testALChars, 3);
230 EXPECT_EQ(testAHash3, hasher.hash()); 210 EXPECT_EQ(testAHash3, hasher.hash());
231 EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 211 EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
232 hasher.addCharacters(testALChars + 3, 2); 212 hasher.addCharacters(testALChars + 3, 2);
233 EXPECT_EQ(testAHash5, hasher.hash()); 213 EXPECT_EQ(testAHash5, hasher.hash());
234 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 214 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
235 hasher = StringHasher(); 215 hasher = StringHasher();
236 hasher.addCharacters(testALChars, 3); 216 hasher.addCharacters(testALChars, 3);
237 EXPECT_EQ(testAHash3, hasher.hash()); 217 EXPECT_EQ(testAHash3, hasher.hash());
238 EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 218 EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
239 hasher.addCharacters(testALChars + 3); 219 hasher.addCharacters(testALChars + 3, 2);
240 EXPECT_EQ(testAHash5, hasher.hash()); 220 EXPECT_EQ(testAHash5, hasher.hash());
241 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 221 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
242 hasher = StringHasher(); 222 hasher = StringHasher();
243 hasher.addCharacters(testAUChars, 3); 223 hasher.addCharacters(testAUChars, 3);
244 EXPECT_EQ(testAHash3, hasher.hash()); 224 EXPECT_EQ(testAHash3, hasher.hash());
245 EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 225 EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
246 hasher.addCharacters(testAUChars + 3, 2); 226 hasher.addCharacters(testAUChars + 3, 2);
247 EXPECT_EQ(testAHash5, hasher.hash()); 227 EXPECT_EQ(testAHash5, hasher.hash());
248 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 228 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
249 hasher = StringHasher(); 229 hasher = StringHasher();
250 hasher.addCharacters(testAUChars, 3); 230 hasher.addCharacters(testAUChars, 3);
251 EXPECT_EQ(testAHash3, hasher.hash()); 231 EXPECT_EQ(testAHash3, hasher.hash());
252 EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 232 EXPECT_EQ(testAHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
253 hasher.addCharacters(testAUChars + 3, 2); 233 hasher.addCharacters(testAUChars + 3, 2);
254 EXPECT_EQ(testAHash5, hasher.hash()); 234 EXPECT_EQ(testAHash5, hasher.hash());
255 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 235 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
256 hasher = StringHasher(); 236 hasher = StringHasher();
257 hasher.addCharacters(testBUChars, 3); 237 hasher.addCharacters(testBUChars, 3);
258 EXPECT_EQ(testBHash3, hasher.hash()); 238 EXPECT_EQ(testBHash3, hasher.hash());
259 EXPECT_EQ(testBHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 239 EXPECT_EQ(testBHash3 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
260 hasher.addCharacters(testBUChars + 3, 2); 240 hasher.addCharacters(testBUChars + 3, 2);
261 EXPECT_EQ(testBHash5, hasher.hash()); 241 EXPECT_EQ(testBHash5, hasher.hash());
262 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 242 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
263 hasher = StringHasher(); 243 hasher = StringHasher();
264 hasher.addCharacters(testBUChars, 3); 244 hasher.addCharacters(testBUChars, 3);
265 hasher.addCharacters(testBUChars + 3); 245 hasher.addCharacters(testBUChars + 3, 2);
266 EXPECT_EQ(testBHash5, hasher.hash()); 246 EXPECT_EQ(testBHash5, hasher.hash());
267 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 247 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
268 } 248 }
269 249
270 TEST(StringHasherTest, StringHasher_addCharactersAssumingAligned) 250 TEST(StringHasherTest, StringHasher_addCharactersAssumingAligned)
271 { 251 {
272 StringHasher hasher; 252 StringHasher hasher;
273 253
274 // Hashing zero characters. 254 // Hashing zero characters.
275 hasher = StringHasher(); 255 hasher = StringHasher();
276 hasher.addCharactersAssumingAligned(static_cast<LChar*>(0), 0); 256 hasher.addCharactersAssumingAligned(static_cast<LChar*>(0), 0);
277 EXPECT_EQ(emptyStringHash, hasher.hash()); 257 EXPECT_EQ(emptyStringHash, hasher.hash());
278 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 258 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
279 hasher = StringHasher(); 259 hasher = StringHasher();
280 hasher.addCharactersAssumingAligned(nullLChars, 0); 260 hasher.addCharactersAssumingAligned(nullLChars, 0);
281 EXPECT_EQ(emptyStringHash, hasher.hash()); 261 EXPECT_EQ(emptyStringHash, hasher.hash());
282 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 262 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
283 hasher = StringHasher(); 263 hasher = StringHasher();
284 hasher.addCharactersAssumingAligned(static_cast<UChar*>(0), 0); 264 hasher.addCharactersAssumingAligned(static_cast<UChar*>(0), 0);
285 EXPECT_EQ(emptyStringHash, hasher.hash()); 265 EXPECT_EQ(emptyStringHash, hasher.hash());
286 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 266 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
287 hasher = StringHasher(); 267 hasher = StringHasher();
288 hasher.addCharactersAssumingAligned(nullUChars, 0); 268 hasher.addCharactersAssumingAligned(nullUChars, 0);
289 EXPECT_EQ(emptyStringHash, hasher.hash()); 269 EXPECT_EQ(emptyStringHash, hasher.hash());
290 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 270 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
291 hasher = StringHasher();
292 hasher.addCharactersAssumingAligned(nullUChars);
293 EXPECT_EQ(emptyStringHash, hasher.hash());
294 EXPECT_EQ(emptyStringHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
295 271
296 // Hashing one character. 272 // Hashing one character.
297 hasher = StringHasher(); 273 hasher = StringHasher();
298 hasher.addCharactersAssumingAligned(nullLChars, 1); 274 hasher.addCharactersAssumingAligned(nullLChars, 1);
299 EXPECT_EQ(singleNullCharacterHash, hasher.hash()); 275 EXPECT_EQ(singleNullCharacterHash, hasher.hash());
300 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked( )); 276 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked( ));
301 hasher = StringHasher(); 277 hasher = StringHasher();
302 hasher.addCharactersAssumingAligned(nullUChars, 1); 278 hasher.addCharactersAssumingAligned(nullUChars, 1);
303 EXPECT_EQ(singleNullCharacterHash, hasher.hash()); 279 EXPECT_EQ(singleNullCharacterHash, hasher.hash());
304 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked( )); 280 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, hasher.hashWithTop8BitsMasked( ));
305 281
306 // Hashing five characters, all at once. 282 // Hashing five characters, all at once.
307 hasher = StringHasher(); 283 hasher = StringHasher();
308 hasher.addCharactersAssumingAligned(testALChars, 5); 284 hasher.addCharactersAssumingAligned(testALChars, 5);
309 EXPECT_EQ(testAHash5, hasher.hash()); 285 EXPECT_EQ(testAHash5, hasher.hash());
310 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 286 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
311 hasher = StringHasher(); 287 hasher = StringHasher();
312 hasher.addCharactersAssumingAligned(testALChars);
313 EXPECT_EQ(testAHash5, hasher.hash());
314 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
315 hasher = StringHasher();
316 hasher.addCharactersAssumingAligned(testAUChars, 5); 288 hasher.addCharactersAssumingAligned(testAUChars, 5);
317 EXPECT_EQ(testAHash5, hasher.hash()); 289 EXPECT_EQ(testAHash5, hasher.hash());
318 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 290 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
319 hasher = StringHasher(); 291 hasher = StringHasher();
320 hasher.addCharactersAssumingAligned(testAUChars);
321 EXPECT_EQ(testAHash5, hasher.hash());
322 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
323 hasher = StringHasher();
324 hasher.addCharactersAssumingAligned(testBUChars, 5); 292 hasher.addCharactersAssumingAligned(testBUChars, 5);
325 EXPECT_EQ(testBHash5, hasher.hash()); 293 EXPECT_EQ(testBHash5, hasher.hash());
326 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 294 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
327 hasher = StringHasher();
328 hasher.addCharactersAssumingAligned(testBUChars);
329 EXPECT_EQ(testBHash5, hasher.hash());
330 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
331 295
332 // Hashing five characters, in groups of two, then the last one. 296 // Hashing five characters, in groups of two, then the last one.
333 hasher = StringHasher(); 297 hasher = StringHasher();
334 hasher.addCharactersAssumingAligned(testALChars, 2); 298 hasher.addCharactersAssumingAligned(testALChars, 2);
335 EXPECT_EQ(testAHash2, hasher.hash()); 299 EXPECT_EQ(testAHash2, hasher.hash());
336 EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 300 EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
337 hasher.addCharactersAssumingAligned(testALChars + 2, 2); 301 hasher.addCharactersAssumingAligned(testALChars + 2, 2);
338 EXPECT_EQ(testAHash4, hasher.hash()); 302 EXPECT_EQ(testAHash4, hasher.hash());
339 EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 303 EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
340 hasher.addCharactersAssumingAligned(testALChars + 4, 1); 304 hasher.addCharactersAssumingAligned(testALChars + 4, 1);
341 EXPECT_EQ(testAHash5, hasher.hash()); 305 EXPECT_EQ(testAHash5, hasher.hash());
342 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 306 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
343 hasher = StringHasher(); 307 hasher = StringHasher();
344 hasher.addCharactersAssumingAligned(testALChars, 2); 308 hasher.addCharactersAssumingAligned(testALChars, 2);
345 hasher.addCharactersAssumingAligned(testALChars + 2, 2); 309 hasher.addCharactersAssumingAligned(testALChars + 2, 2);
346 hasher.addCharactersAssumingAligned(testALChars + 4); 310 hasher.addCharactersAssumingAligned(testALChars + 4, 1);
347 EXPECT_EQ(testAHash5, hasher.hash()); 311 EXPECT_EQ(testAHash5, hasher.hash());
348 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 312 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
349 hasher = StringHasher(); 313 hasher = StringHasher();
350 hasher.addCharactersAssumingAligned(testAUChars, 2); 314 hasher.addCharactersAssumingAligned(testAUChars, 2);
351 EXPECT_EQ(testAHash2, hasher.hash()); 315 EXPECT_EQ(testAHash2, hasher.hash());
352 EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 316 EXPECT_EQ(testAHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
353 hasher.addCharactersAssumingAligned(testAUChars + 2, 2); 317 hasher.addCharactersAssumingAligned(testAUChars + 2, 2);
354 EXPECT_EQ(testAHash4, hasher.hash()); 318 EXPECT_EQ(testAHash4, hasher.hash());
355 EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 319 EXPECT_EQ(testAHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
356 hasher.addCharactersAssumingAligned(testAUChars + 4, 1); 320 hasher.addCharactersAssumingAligned(testAUChars + 4, 1);
357 EXPECT_EQ(testAHash5, hasher.hash()); 321 EXPECT_EQ(testAHash5, hasher.hash());
358 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 322 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
359 hasher = StringHasher(); 323 hasher = StringHasher();
360 hasher.addCharactersAssumingAligned(testAUChars, 2); 324 hasher.addCharactersAssumingAligned(testAUChars, 2);
361 hasher.addCharactersAssumingAligned(testAUChars + 2, 2); 325 hasher.addCharactersAssumingAligned(testAUChars + 2, 2);
362 hasher.addCharactersAssumingAligned(testAUChars + 4); 326 hasher.addCharactersAssumingAligned(testAUChars + 4, 1);
363 EXPECT_EQ(testAHash5, hasher.hash()); 327 EXPECT_EQ(testAHash5, hasher.hash());
364 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 328 EXPECT_EQ(testAHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
365 hasher = StringHasher(); 329 hasher = StringHasher();
366 hasher.addCharactersAssumingAligned(testBUChars, 2); 330 hasher.addCharactersAssumingAligned(testBUChars, 2);
367 EXPECT_EQ(testBHash2, hasher.hash()); 331 EXPECT_EQ(testBHash2, hasher.hash());
368 EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 332 EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
369 hasher.addCharactersAssumingAligned(testBUChars + 2, 2); 333 hasher.addCharactersAssumingAligned(testBUChars + 2, 2);
370 EXPECT_EQ(testBHash4, hasher.hash()); 334 EXPECT_EQ(testBHash4, hasher.hash());
371 EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 335 EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
372 hasher.addCharactersAssumingAligned(testBUChars + 4, 1); 336 hasher.addCharactersAssumingAligned(testBUChars + 4, 1);
373 EXPECT_EQ(testBHash5, hasher.hash()); 337 EXPECT_EQ(testBHash5, hasher.hash());
374 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 338 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
375 hasher = StringHasher(); 339 hasher = StringHasher();
376 hasher.addCharactersAssumingAligned(testBUChars, 2); 340 hasher.addCharactersAssumingAligned(testBUChars, 2);
377 hasher.addCharactersAssumingAligned(testBUChars + 2, 2); 341 hasher.addCharactersAssumingAligned(testBUChars + 2, 2);
378 hasher.addCharactersAssumingAligned(testBUChars + 4); 342 hasher.addCharactersAssumingAligned(testBUChars + 4, 1);
379 EXPECT_EQ(testBHash5, hasher.hash()); 343 EXPECT_EQ(testBHash5, hasher.hash());
380 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 344 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
381 345
382 // Hashing five characters, first two characters one at a time, 346 // Hashing five characters, first two characters one at a time,
383 // then two more, then the last one. 347 // then two more, then the last one.
384 hasher = StringHasher(); 348 hasher = StringHasher();
385 hasher.addCharacter(testBUChars[0]); 349 hasher.addCharacter(testBUChars[0]);
386 EXPECT_EQ(testBHash1, hasher.hash()); 350 EXPECT_EQ(testBHash1, hasher.hash());
387 EXPECT_EQ(testBHash1 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 351 EXPECT_EQ(testBHash1 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
388 hasher.addCharacter(testBUChars[1]); 352 hasher.addCharacter(testBUChars[1]);
389 EXPECT_EQ(testBHash2, hasher.hash()); 353 EXPECT_EQ(testBHash2, hasher.hash());
390 EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 354 EXPECT_EQ(testBHash2 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
391 hasher.addCharactersAssumingAligned(testBUChars[2], testBUChars[3]); 355 hasher.addCharactersAssumingAligned(testBUChars[2], testBUChars[3]);
392 EXPECT_EQ(testBHash4, hasher.hash()); 356 EXPECT_EQ(testBHash4, hasher.hash());
393 EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 357 EXPECT_EQ(testBHash4 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
394 hasher.addCharactersAssumingAligned(testBUChars + 4); 358 hasher.addCharactersAssumingAligned(testBUChars + 4, 1);
395 EXPECT_EQ(testBHash5, hasher.hash()); 359 EXPECT_EQ(testBHash5, hasher.hash());
396 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked()); 360 EXPECT_EQ(testBHash5 & 0xFFFFFF, hasher.hashWithTop8BitsMasked());
397 } 361 }
398 362
399 TEST(StringHasherTest, StringHasher_computeHash) 363 TEST(StringHasherTest, StringHasher_computeHash)
400 { 364 {
401 EXPECT_EQ(emptyStringHash, StringHasher::computeHash(static_cast<LChar*>(0), 0)); 365 EXPECT_EQ(emptyStringHash, StringHasher::computeHash(static_cast<LChar*>(0), 0));
402 EXPECT_EQ(emptyStringHash, StringHasher::computeHash(nullLChars, 0)); 366 EXPECT_EQ(emptyStringHash, StringHasher::computeHash(nullLChars, 0));
403 EXPECT_EQ(emptyStringHash, StringHasher::computeHash(static_cast<UChar*>(0), 0)); 367 EXPECT_EQ(emptyStringHash, StringHasher::computeHash(static_cast<UChar*>(0), 0));
404 EXPECT_EQ(emptyStringHash, StringHasher::computeHash(nullUChars, 0)); 368 EXPECT_EQ(emptyStringHash, StringHasher::computeHash(nullUChars, 0));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, StringHasher::hashMemory(nullU Chars, 2)); 400 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, StringHasher::hashMemory(nullU Chars, 2));
437 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, StringHasher::hashMemory<2>(nu llUChars)); 401 EXPECT_EQ(singleNullCharacterHash & 0xFFFFFF, StringHasher::hashMemory<2>(nu llUChars));
438 402
439 EXPECT_EQ(testAHash5 & 0xFFFFFF, StringHasher::hashMemory(testAUChars, 10)); 403 EXPECT_EQ(testAHash5 & 0xFFFFFF, StringHasher::hashMemory(testAUChars, 10));
440 EXPECT_EQ(testAHash5 & 0xFFFFFF, StringHasher::hashMemory<10>(testAUChars)); 404 EXPECT_EQ(testAHash5 & 0xFFFFFF, StringHasher::hashMemory<10>(testAUChars));
441 EXPECT_EQ(testBHash5 & 0xFFFFFF, StringHasher::hashMemory(testBUChars, 10)); 405 EXPECT_EQ(testBHash5 & 0xFFFFFF, StringHasher::hashMemory(testBUChars, 10));
442 EXPECT_EQ(testBHash5 & 0xFFFFFF, StringHasher::hashMemory<10>(testBUChars)); 406 EXPECT_EQ(testBHash5 & 0xFFFFFF, StringHasher::hashMemory<10>(testBUChars));
443 } 407 }
444 408
445 } // namespace 409 } // namespace
OLDNEW
« no previous file with comments | « Source/wtf/StringHasher.h ('k') | Source/wtf/text/AtomicString.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698