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

Side by Side Diff: chrome/renderer/spellchecker/spellcheck_unittest.cc

Issue 11776032: Unit test for spellchecking 96- through 102-character words (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Merge master Created 7 years, 11 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 | « no previous file | chrome/tools/convert_dict/aff_reader.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/glue/webkit_glue.h" 5 #include "webkit/glue/webkit_glue.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/platform_file.h" 10 #include "base/platform_file.h"
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1181 1181
1182 EXPECT_EQ(kTestCases[i].should_pass, result) << kTestCases[i].input << 1182 EXPECT_EQ(kTestCases[i].should_pass, result) << kTestCases[i].input <<
1183 " in " << kLocales[j]; 1183 " in " << kLocales[j];
1184 } 1184 }
1185 } 1185 }
1186 } 1186 }
1187 1187
1188 // Checks that NOSUGGEST works in English dictionaries. 1188 // Checks that NOSUGGEST works in English dictionaries.
1189 TEST_F(SpellCheckTest, NoSuggest) { 1189 TEST_F(SpellCheckTest, NoSuggest) {
1190 static const struct { 1190 static const struct {
1191 const char* misspelling;
1192 const char* input; 1191 const char* input;
1192 const char* suggestion;
1193 const char* locale; 1193 const char* locale;
1194 bool should_pass; 1194 bool should_pass;
1195 } kTestCases[] = { 1195 } kTestCases[] = {
1196 {"suckerbert", "cocksucker", "en-GB", true}, 1196 {"suckerbert", "cocksucker", "en-GB", true},
1197 {"suckerbert", "cocksucker", "en-US", true}, 1197 {"suckerbert", "cocksucker", "en-US", true},
1198 {"suckerbert", "cocksucker", "en-CA", true}, 1198 {"suckerbert", "cocksucker", "en-CA", true},
1199 {"suckerbert", "cocksucker", "en-AU", true}, 1199 {"suckerbert", "cocksucker", "en-AU", true},
1200 {"suckerbert", "cocksuckers", "en-GB", true}, 1200 {"suckerbert", "cocksuckers", "en-GB", true},
1201 {"suckerbert", "cocksuckers", "en-US", true}, 1201 {"suckerbert", "cocksuckers", "en-US", true},
1202 {"suckerbert", "cocksuckers", "en-CA", true}, 1202 {"suckerbert", "cocksuckers", "en-CA", true},
1203 {"suckerbert", "cocksuckers", "en-AU", true}, 1203 {"suckerbert", "cocksuckers", "en-AU", true},
1204 {"Batasunaa", "Batasuna", "ca-ES", true}, 1204 {"Batasunaa", "Batasuna", "ca-ES", true},
1205 {"pornoo", "porno", "it-IT", true}, 1205 {"pornoo", "porno", "it-IT", true},
1206 {"catass", "catas", "lt-LT", true}, 1206 {"catass", "catas", "lt-LT", true},
1207 {"kuracc", "kurac", "sl-SI", true}, 1207 {"kuracc", "kurac", "sl-SI", true},
1208 {"pittt", "pitt", "sv-SE", true}, 1208 {"pittt", "pitt", "sv-SE", true},
1209 }; 1209 };
1210 1210
1211 size_t test_cases_size = ARRAYSIZE_UNSAFE(kTestCases); 1211 size_t test_cases_size = ARRAYSIZE_UNSAFE(kTestCases);
1212 for (size_t i = 0; i < test_cases_size; ++i) { 1212 for (size_t i = 0; i < test_cases_size; ++i) {
1213 ReinitializeSpellCheck(kTestCases[i].locale); 1213 ReinitializeSpellCheck(kTestCases[i].locale);
1214 size_t input_length = 0; 1214 size_t suggestion_length = 0;
1215 if (kTestCases[i].input != NULL) 1215 if (kTestCases[i].suggestion != NULL)
1216 input_length = strlen(kTestCases[i].input); 1216 suggestion_length = strlen(kTestCases[i].suggestion);
1217 1217
1218 // First check that the NOSUGGEST flag didn't mark this word as not being in 1218 // First check that the NOSUGGEST flag didn't mark this word as not being in
1219 // the dictionary. 1219 // the dictionary.
1220 int misspelling_start = 0; 1220 int misspelling_start = 0;
1221 int misspelling_length = 0; 1221 int misspelling_length = 0;
1222 bool result = spell_check()->SpellCheckWord( 1222 bool result = spell_check()->SpellCheckWord(
1223 ASCIIToUTF16(kTestCases[i].input).c_str(), 1223 ASCIIToUTF16(kTestCases[i].suggestion).c_str(),
1224 static_cast<int>(input_length), 1224 static_cast<int>(suggestion_length),
1225 0, 1225 0,
1226 &misspelling_start, 1226 &misspelling_start,
1227 &misspelling_length, NULL); 1227 &misspelling_length, NULL);
1228 1228
1229 EXPECT_EQ(kTestCases[i].should_pass, result) << kTestCases[i].input << 1229 EXPECT_EQ(kTestCases[i].should_pass, result) << kTestCases[i].suggestion <<
1230 " in " << kTestCases[i].input; 1230 " in " << kTestCases[i].locale;
1231 1231
1232 // Now verify that this test case does not show up as a suggestion. 1232 // Now verify that this test case does not show up as a suggestion.
1233 std::vector<string16> suggestions; 1233 std::vector<string16> suggestions;
1234 input_length = 0; 1234 size_t input_length = 0;
1235 if (kTestCases[i].misspelling != NULL) 1235 if (kTestCases[i].input != NULL)
1236 input_length = strlen(kTestCases[i].misspelling); 1236 input_length = strlen(kTestCases[i].input);
1237 result = spell_check()->SpellCheckWord( 1237 result = spell_check()->SpellCheckWord(
1238 ASCIIToUTF16(kTestCases[i].misspelling).c_str(), 1238 ASCIIToUTF16(kTestCases[i].input).c_str(),
1239 static_cast<int>(input_length), 1239 static_cast<int>(input_length),
1240 0, 1240 0,
1241 &misspelling_start, 1241 &misspelling_start,
1242 &misspelling_length, 1242 &misspelling_length,
1243 &suggestions); 1243 &suggestions);
1244 // Check if the suggested words occur. 1244 // Input word should be a misspelling.
1245 EXPECT_FALSE(result) << kTestCases[i].misspelling 1245 EXPECT_FALSE(result) << kTestCases[i].input
1246 << " is not a misspelling in " 1246 << " is not a misspelling in "
1247 << kTestCases[i].locale; 1247 << kTestCases[i].locale;
1248 // Check if the suggested words occur.
1248 for (int j = 0; j < static_cast<int>(suggestions.size()); j++) { 1249 for (int j = 0; j < static_cast<int>(suggestions.size()); j++) {
1249 for (size_t t = 0; t < test_cases_size; t++) { 1250 for (size_t t = 0; t < test_cases_size; t++) {
1250 int compare_result = 1251 int compare_result =
1251 suggestions.at(j).compare(ASCIIToUTF16(kTestCases[t].input)); 1252 suggestions.at(j).compare(ASCIIToUTF16(kTestCases[t].suggestion));
1252 EXPECT_FALSE(compare_result == 0) << kTestCases[t].input << 1253 EXPECT_FALSE(compare_result == 0) << kTestCases[t].suggestion <<
1253 " in " << kTestCases[i].locale; 1254 " in " << kTestCases[i].locale;
1254 } 1255 }
1255 } 1256 }
1256 } 1257 }
1257 } 1258 }
1258 1259
1259 // Check that the correct dictionary files are checked in. 1260 // Check that the correct dictionary files are checked in.
1260 TEST_F(SpellCheckTest, DictionaryFiles) { 1261 TEST_F(SpellCheckTest, DictionaryFiles) {
1261 std::vector<std::string> locale_codes;
1262 l10n_util::GetAcceptLanguagesForLocale("C", &locale_codes);
1263 EXPECT_FALSE(locale_codes.empty());
1264
1265 std::vector<std::string> spellcheck_languages; 1262 std::vector<std::string> spellcheck_languages;
1266 chrome::spellcheck_common::SpellCheckLanguages(&spellcheck_languages); 1263 chrome::spellcheck_common::SpellCheckLanguages(&spellcheck_languages);
1267 EXPECT_FALSE(spellcheck_languages.empty()); 1264 EXPECT_FALSE(spellcheck_languages.empty());
1268 EXPECT_LE(spellcheck_languages.size(), locale_codes.size());
1269 1265
1270 FilePath hunspell = GetHunspellDirectory(); 1266 FilePath hunspell = GetHunspellDirectory();
1271 for (size_t i = 0; i < spellcheck_languages.size(); ++i) { 1267 for (size_t i = 0; i < spellcheck_languages.size(); ++i) {
1272 FilePath dict = chrome::spellcheck_common::GetVersionedFileName( 1268 FilePath dict = chrome::spellcheck_common::GetVersionedFileName(
1273 spellcheck_languages[i], hunspell); 1269 spellcheck_languages[i], hunspell);
1274 EXPECT_TRUE(file_util::PathExists(dict)) << dict.value() << " not found"; 1270 EXPECT_TRUE(file_util::PathExists(dict)) << dict.value() << " not found";
1275 } 1271 }
1276 } 1272 }
1277 1273
1274 // Check for correct behavior around the maximum word length boundary.
1275 TEST_F(SpellCheckTest, MaxWordLengthBoundary) {
1276 static const char* kTestCases[] = {
1277 // 96 characters.
1278 "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw xyzabcdefghijklmnopqr",
1279 // 97 characters.
1280 "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw xyzabcdefghijklmnopqrs",
1281 // 98 characters.
1282 "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw xyzabcdefghijklmnopqrst",
1283 // 99 characters.
1284 "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw xyzabcdefghijklmnopqrstu",
1285 // 100 characters.
1286 "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw xyzabcdefghijklmnopqrstuv",
1287 // 101 characters.
1288 "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw xyzabcdefghijklmnopqrstuvw",
1289 // 102 characters.
1290 "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvw xyzabcdefghijklmnopqrstuvwx"
1291 };
1292
1293 ReinitializeSpellCheck("en-US");
1294 size_t test_cases_size = ARRAYSIZE_UNSAFE(kTestCases);
1295 for (size_t i = 0; i < test_cases_size; ++i) {
1296 size_t input_length = strlen(kTestCases[i]);
1297
1298 int misspelling_start = 0;
1299 int misspelling_length = 0;
1300 std::vector<string16> suggestions;
1301 bool result = spell_check()->SpellCheckWord(
1302 ASCIIToUTF16(kTestCases[i]).c_str(),
1303 static_cast<int>(input_length),
1304 0,
1305 &misspelling_start,
1306 &misspelling_length,
1307 &suggestions);
1308
1309 EXPECT_FALSE(result) << kTestCases[i] << " is spelled correctly";
1310 EXPECT_TRUE(suggestions.empty()) << kTestCases[i] << " has suggestions";
1311 }
1312 }
1313
1278 #endif 1314 #endif
OLDNEW
« no previous file with comments | « no previous file | chrome/tools/convert_dict/aff_reader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698