SpacingAndPunctuationsTests.java revision 837cdd738b7ddbeac04b15230f01e44d247bd50a
1/* 2 * Copyright (C) 2014 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.inputmethod.latin.settings; 18 19import android.content.res.Resources; 20import android.test.AndroidTestCase; 21import android.test.suitebuilder.annotation.SmallTest; 22 23import com.android.inputmethod.latin.SuggestedWords; 24import com.android.inputmethod.latin.utils.RunInLocale; 25 26import junit.framework.AssertionFailedError; 27 28import java.util.Locale; 29 30@SmallTest 31public class SpacingAndPunctuationsTests extends AndroidTestCase { 32 private static final int ARMENIAN_FULL_STOP = '\u0589'; 33 private static final int ARMENIAN_COMMA = '\u055D'; 34 35 private SpacingAndPunctuations ENGLISH; 36 private SpacingAndPunctuations FRENCH; 37 private SpacingAndPunctuations GERMAN; 38 private SpacingAndPunctuations ARMENIAN; 39 private SpacingAndPunctuations THAI; 40 private SpacingAndPunctuations KHMER; 41 private SpacingAndPunctuations LAO; 42 private SpacingAndPunctuations ARABIC; 43 private SpacingAndPunctuations PERSIAN; 44 private SpacingAndPunctuations HEBREW; 45 46 private SpacingAndPunctuations UNITED_STATES; 47 private SpacingAndPunctuations UNITED_KINGDOM; 48 private SpacingAndPunctuations CANADA_FRENCH; 49 private SpacingAndPunctuations SWISS_GERMAN; 50 private SpacingAndPunctuations INDIA_ENGLISH; 51 private SpacingAndPunctuations ARMENIA_ARMENIAN; 52 private SpacingAndPunctuations CAMBODIA_KHMER; 53 private SpacingAndPunctuations LAOS_LAO; 54 55 @Override 56 protected void setUp() throws Exception { 57 super.setUp(); 58 59 // Language only 60 ENGLISH = getSpacingAndPunctuations(Locale.ENGLISH); 61 FRENCH = getSpacingAndPunctuations(Locale.FRENCH); 62 GERMAN = getSpacingAndPunctuations(Locale.GERMAN); 63 THAI = getSpacingAndPunctuations(new Locale("th")); 64 ARMENIAN = getSpacingAndPunctuations(new Locale("hy")); 65 KHMER = getSpacingAndPunctuations(new Locale("km")); 66 LAO = getSpacingAndPunctuations(new Locale("lo")); 67 ARABIC = getSpacingAndPunctuations(new Locale("ar")); 68 PERSIAN = getSpacingAndPunctuations(new Locale("fa")); 69 HEBREW = getSpacingAndPunctuations(new Locale("iw")); 70 71 // Language and Country 72 UNITED_STATES = getSpacingAndPunctuations(Locale.US); 73 UNITED_KINGDOM = getSpacingAndPunctuations(Locale.UK); 74 CANADA_FRENCH = getSpacingAndPunctuations(Locale.CANADA_FRENCH); 75 SWISS_GERMAN = getSpacingAndPunctuations(new Locale("de", "CH")); 76 INDIA_ENGLISH = getSpacingAndPunctuations(new Locale("en", "IN")); 77 ARMENIA_ARMENIAN = getSpacingAndPunctuations(new Locale("hy", "AM")); 78 CAMBODIA_KHMER = getSpacingAndPunctuations(new Locale("km", "KH")); 79 LAOS_LAO = getSpacingAndPunctuations(new Locale("lo", "LA")); 80 } 81 82 private SpacingAndPunctuations getSpacingAndPunctuations(final Locale locale) { 83 final RunInLocale<SpacingAndPunctuations> job = new RunInLocale<SpacingAndPunctuations>() { 84 @Override 85 protected SpacingAndPunctuations job(Resources res) { 86 return new SpacingAndPunctuations(res); 87 } 88 }; 89 return job.runInLocale(getContext().getResources(), locale); 90 } 91 92 private static void testingStandardWordSeparator(final SpacingAndPunctuations sp) { 93 assertTrue("Tab", sp.isWordSeparator('\t')); 94 assertTrue("Newline", sp.isWordSeparator('\n')); 95 assertTrue("Space", sp.isWordSeparator(' ')); 96 assertTrue("Exclamation", sp.isWordSeparator('!')); 97 assertTrue("Quotation", sp.isWordSeparator('"')); 98 assertFalse("Number", sp.isWordSeparator('#')); 99 assertFalse("Dollar", sp.isWordSeparator('$')); 100 assertFalse("Percent", sp.isWordSeparator('%')); 101 assertTrue("Ampersand", sp.isWordSeparator('&')); 102 assertFalse("Apostrophe", sp.isWordSeparator('\'')); 103 assertTrue("L Paren", sp.isWordSeparator('(')); 104 assertTrue("R Paren", sp.isWordSeparator(')')); 105 assertTrue("Asterisk", sp.isWordSeparator('*')); 106 assertTrue("Plus", sp.isWordSeparator('+')); 107 assertTrue("Comma", sp.isWordSeparator(',')); 108 assertFalse("Minus", sp.isWordSeparator('-')); 109 assertTrue("Period", sp.isWordSeparator('.')); 110 assertTrue("Slash", sp.isWordSeparator('/')); 111 assertTrue("Colon", sp.isWordSeparator(':')); 112 assertTrue("Semicolon", sp.isWordSeparator(';')); 113 assertTrue("L Angle", sp.isWordSeparator('<')); 114 assertTrue("Equal", sp.isWordSeparator('=')); 115 assertTrue("R Angle", sp.isWordSeparator('>')); 116 assertTrue("Question", sp.isWordSeparator('?')); 117 assertFalse("Atmark", sp.isWordSeparator('@')); 118 assertTrue("L S Bracket", sp.isWordSeparator('[')); 119 assertFalse("B Slash", sp.isWordSeparator('\\')); 120 assertTrue("R S Bracket", sp.isWordSeparator(']')); 121 assertFalse("Circumflex", sp.isWordSeparator('^')); 122 assertTrue("Underscore", sp.isWordSeparator('_')); 123 assertFalse("Grave", sp.isWordSeparator('`')); 124 assertTrue("L C Brace", sp.isWordSeparator('{')); 125 assertTrue("V Line", sp.isWordSeparator('|')); 126 assertTrue("R C Brace", sp.isWordSeparator('}')); 127 assertFalse("Tilde", sp.isWordSeparator('~')); 128 } 129 130 public void testWordSeparator() { 131 testingStandardWordSeparator(ENGLISH); 132 testingStandardWordSeparator(FRENCH); 133 testingStandardWordSeparator(CANADA_FRENCH); 134 testingStandardWordSeparator(ARMENIA_ARMENIAN); 135 assertTrue(ARMENIA_ARMENIAN.isWordSeparator(ARMENIAN_FULL_STOP)); 136 assertTrue(ARMENIA_ARMENIAN.isWordSeparator(ARMENIAN_COMMA)); 137 // TODO: We should fix these. 138 testingStandardWordSeparator(ARMENIAN); 139 assertFalse(ARMENIAN.isWordSeparator(ARMENIAN_FULL_STOP)); 140 assertFalse(ARMENIAN.isWordSeparator(ARMENIAN_COMMA)); 141 } 142 143 private static void testingStandardWordConnector(final SpacingAndPunctuations sp) { 144 assertFalse("Tab", sp.isWordConnector('\t')); 145 assertFalse("Newline", sp.isWordConnector('\n')); 146 assertFalse("Space", sp.isWordConnector(' ')); 147 assertFalse("Exclamation", sp.isWordConnector('!')); 148 assertFalse("Quotation", sp.isWordConnector('"')); 149 assertFalse("Number", sp.isWordConnector('#')); 150 assertFalse("Dollar", sp.isWordConnector('$')); 151 assertFalse("Percent", sp.isWordConnector('%')); 152 assertFalse("Ampersand", sp.isWordConnector('&')); 153 assertTrue("Apostrophe", sp.isWordConnector('\'')); 154 assertFalse("L Paren", sp.isWordConnector('(')); 155 assertFalse("R Paren", sp.isWordConnector(')')); 156 assertFalse("Asterisk", sp.isWordConnector('*')); 157 assertFalse("Plus", sp.isWordConnector('+')); 158 assertFalse("Comma", sp.isWordConnector(',')); 159 assertTrue("Minus", sp.isWordConnector('-')); 160 assertFalse("Period", sp.isWordConnector('.')); 161 assertFalse("Slash", sp.isWordConnector('/')); 162 assertFalse("Colon", sp.isWordConnector(':')); 163 assertFalse("Semicolon", sp.isWordConnector(';')); 164 assertFalse("L Angle", sp.isWordConnector('<')); 165 assertFalse("Equal", sp.isWordConnector('=')); 166 assertFalse("R Angle", sp.isWordConnector('>')); 167 assertFalse("Question", sp.isWordConnector('?')); 168 assertFalse("Atmark", sp.isWordConnector('@')); 169 assertFalse("L S Bracket", sp.isWordConnector('[')); 170 assertFalse("B Slash", sp.isWordConnector('\\')); 171 assertFalse("R S Bracket", sp.isWordConnector(']')); 172 assertFalse("Circumflex", sp.isWordConnector('^')); 173 assertFalse("Underscore", sp.isWordConnector('_')); 174 assertFalse("Grave", sp.isWordConnector('`')); 175 assertFalse("L C Brace", sp.isWordConnector('{')); 176 assertFalse("V Line", sp.isWordConnector('|')); 177 assertFalse("R C Brace", sp.isWordConnector('}')); 178 assertFalse("Tilde", sp.isWordConnector('~')); 179 180 } 181 182 public void testWordConnector() { 183 testingStandardWordConnector(ENGLISH); 184 testingStandardWordConnector(FRENCH); 185 testingStandardWordConnector(CANADA_FRENCH); 186 testingStandardWordConnector(ARMENIA_ARMENIAN); 187 } 188 189 private static void testingCommonPrecededBySpace(final SpacingAndPunctuations sp) { 190 assertFalse("Tab", sp.isUsuallyPrecededBySpace('\t')); 191 assertFalse("Newline", sp.isUsuallyPrecededBySpace('\n')); 192 assertFalse("Space", sp.isUsuallyPrecededBySpace(' ')); 193 //assertFalse("Exclamation", sp.isUsuallyPrecededBySpace('!')); 194 assertFalse("Quotation", sp.isUsuallyPrecededBySpace('"')); 195 assertFalse("Number", sp.isUsuallyPrecededBySpace('#')); 196 assertFalse("Dollar", sp.isUsuallyPrecededBySpace('$')); 197 assertFalse("Percent", sp.isUsuallyPrecededBySpace('%')); 198 assertTrue("Ampersand", sp.isUsuallyPrecededBySpace('&')); 199 assertFalse("Apostrophe", sp.isUsuallyPrecededBySpace('\'')); 200 assertTrue("L Paren", sp.isUsuallyPrecededBySpace('(')); 201 assertFalse("R Paren", sp.isUsuallyPrecededBySpace(')')); 202 assertFalse("Asterisk", sp.isUsuallyPrecededBySpace('*')); 203 assertFalse("Plus", sp.isUsuallyPrecededBySpace('+')); 204 assertFalse("Comma", sp.isUsuallyPrecededBySpace(',')); 205 assertFalse("Minus", sp.isUsuallyPrecededBySpace('-')); 206 assertFalse("Period", sp.isUsuallyPrecededBySpace('.')); 207 assertFalse("Slash", sp.isUsuallyPrecededBySpace('/')); 208 //assertFalse("Colon", sp.isUsuallyPrecededBySpace(':')); 209 //assertFalse("Semicolon", sp.isUsuallyPrecededBySpace(';')); 210 assertFalse("L Angle", sp.isUsuallyPrecededBySpace('<')); 211 assertFalse("Equal", sp.isUsuallyPrecededBySpace('=')); 212 assertFalse("R Angle", sp.isUsuallyPrecededBySpace('>')); 213 //assertFalse("Question", sp.isUsuallyPrecededBySpace('?')); 214 assertFalse("Atmark", sp.isUsuallyPrecededBySpace('@')); 215 assertTrue("L S Bracket", sp.isUsuallyPrecededBySpace('[')); 216 assertFalse("B Slash", sp.isUsuallyPrecededBySpace('\\')); 217 assertFalse("R S Bracket", sp.isUsuallyPrecededBySpace(']')); 218 assertFalse("Circumflex", sp.isUsuallyPrecededBySpace('^')); 219 assertFalse("Underscore", sp.isUsuallyPrecededBySpace('_')); 220 assertFalse("Grave", sp.isUsuallyPrecededBySpace('`')); 221 assertTrue("L C Brace", sp.isUsuallyPrecededBySpace('{')); 222 assertFalse("V Line", sp.isUsuallyPrecededBySpace('|')); 223 assertFalse("R C Brace", sp.isUsuallyPrecededBySpace('}')); 224 assertFalse("Tilde", sp.isUsuallyPrecededBySpace('~')); 225 } 226 227 private static void testingStandardPrecededBySpace(final SpacingAndPunctuations sp) { 228 testingCommonPrecededBySpace(sp); 229 assertFalse("Exclamation", sp.isUsuallyPrecededBySpace('!')); 230 assertFalse("Colon", sp.isUsuallyPrecededBySpace(':')); 231 assertFalse("Semicolon", sp.isUsuallyPrecededBySpace(';')); 232 assertFalse("Question", sp.isUsuallyPrecededBySpace('?')); 233 } 234 235 public void testIsUsuallyPrecededBySpace() { 236 testingStandardPrecededBySpace(ENGLISH); 237 testingCommonPrecededBySpace(FRENCH); 238 assertTrue("Exclamation", FRENCH.isUsuallyPrecededBySpace('!')); 239 assertTrue("Colon", FRENCH.isUsuallyPrecededBySpace(':')); 240 assertTrue("Semicolon", FRENCH.isUsuallyPrecededBySpace(';')); 241 assertTrue("Question", FRENCH.isUsuallyPrecededBySpace('?')); 242 testingCommonPrecededBySpace(CANADA_FRENCH); 243 assertFalse("Exclamation", CANADA_FRENCH.isUsuallyPrecededBySpace('!')); 244 assertTrue("Colon", CANADA_FRENCH.isUsuallyPrecededBySpace(':')); 245 assertFalse("Semicolon", CANADA_FRENCH.isUsuallyPrecededBySpace(';')); 246 assertFalse("Question", CANADA_FRENCH.isUsuallyPrecededBySpace('?')); 247 testingStandardPrecededBySpace(ARMENIA_ARMENIAN); 248 } 249 250 private static void testingStandardFollowedBySpace(final SpacingAndPunctuations sp) { 251 assertFalse("Tab", sp.isUsuallyFollowedBySpace('\t')); 252 assertFalse("Newline", sp.isUsuallyFollowedBySpace('\n')); 253 assertFalse("Space", sp.isUsuallyFollowedBySpace(' ')); 254 assertTrue("Exclamation", sp.isUsuallyFollowedBySpace('!')); 255 assertFalse("Quotation", sp.isUsuallyFollowedBySpace('"')); 256 assertFalse("Number", sp.isUsuallyFollowedBySpace('#')); 257 assertFalse("Dollar", sp.isUsuallyFollowedBySpace('$')); 258 assertFalse("Percent", sp.isUsuallyFollowedBySpace('%')); 259 assertTrue("Ampersand", sp.isUsuallyFollowedBySpace('&')); 260 assertFalse("Apostrophe", sp.isUsuallyFollowedBySpace('\'')); 261 assertFalse("L Paren", sp.isUsuallyFollowedBySpace('(')); 262 assertTrue("R Paren", sp.isUsuallyFollowedBySpace(')')); 263 assertFalse("Asterisk", sp.isUsuallyFollowedBySpace('*')); 264 assertFalse("Plus", sp.isUsuallyFollowedBySpace('+')); 265 assertTrue("Comma", sp.isUsuallyFollowedBySpace(',')); 266 assertFalse("Minus", sp.isUsuallyFollowedBySpace('-')); 267 assertTrue("Period", sp.isUsuallyFollowedBySpace('.')); 268 assertFalse("Slash", sp.isUsuallyFollowedBySpace('/')); 269 assertTrue("Colon", sp.isUsuallyFollowedBySpace(':')); 270 assertTrue("Semicolon", sp.isUsuallyFollowedBySpace(';')); 271 assertFalse("L Angle", sp.isUsuallyFollowedBySpace('<')); 272 assertFalse("Equal", sp.isUsuallyFollowedBySpace('=')); 273 assertFalse("R Angle", sp.isUsuallyFollowedBySpace('>')); 274 assertTrue("Question", sp.isUsuallyFollowedBySpace('?')); 275 assertFalse("Atmark", sp.isUsuallyFollowedBySpace('@')); 276 assertFalse("L S Bracket", sp.isUsuallyFollowedBySpace('[')); 277 assertFalse("B Slash", sp.isUsuallyFollowedBySpace('\\')); 278 assertTrue("R S Bracket", sp.isUsuallyFollowedBySpace(']')); 279 assertFalse("Circumflex", sp.isUsuallyFollowedBySpace('^')); 280 assertFalse("Underscore", sp.isUsuallyFollowedBySpace('_')); 281 assertFalse("Grave", sp.isUsuallyFollowedBySpace('`')); 282 assertFalse("L C Brace", sp.isUsuallyFollowedBySpace('{')); 283 assertFalse("V Line", sp.isUsuallyFollowedBySpace('|')); 284 assertTrue("R C Brace", sp.isUsuallyFollowedBySpace('}')); 285 assertFalse("Tilde", sp.isUsuallyFollowedBySpace('~')); 286 } 287 288 public void testIsUsuallyFollowedBySpace() { 289 testingStandardFollowedBySpace(ENGLISH); 290 testingStandardFollowedBySpace(FRENCH); 291 testingStandardFollowedBySpace(CANADA_FRENCH); 292 testingStandardFollowedBySpace(ARMENIA_ARMENIAN); 293 assertTrue(ARMENIA_ARMENIAN.isUsuallyFollowedBySpace(ARMENIAN_FULL_STOP)); 294 assertTrue(ARMENIA_ARMENIAN.isUsuallyFollowedBySpace(ARMENIAN_COMMA)); 295 } 296 297 private static void testingStandardSentenceSeparator(final SpacingAndPunctuations sp) { 298 assertFalse("Tab", sp.isUsuallyFollowedBySpace('\t')); 299 assertFalse("Newline", sp.isUsuallyFollowedBySpace('\n')); 300 assertFalse("Space", sp.isUsuallyFollowedBySpace(' ')); 301 assertFalse("Exclamation", sp.isUsuallyFollowedBySpace('!')); 302 assertFalse("Quotation", sp.isUsuallyFollowedBySpace('"')); 303 assertFalse("Number", sp.isUsuallyFollowedBySpace('#')); 304 assertFalse("Dollar", sp.isUsuallyFollowedBySpace('$')); 305 assertFalse("Percent", sp.isUsuallyFollowedBySpace('%')); 306 assertFalse("Ampersand", sp.isUsuallyFollowedBySpace('&')); 307 assertFalse("Apostrophe", sp.isUsuallyFollowedBySpace('\'')); 308 assertFalse("L Paren", sp.isUsuallyFollowedBySpace('(')); 309 assertFalse("R Paren", sp.isUsuallyFollowedBySpace(')')); 310 assertFalse("Asterisk", sp.isUsuallyFollowedBySpace('*')); 311 assertFalse("Plus", sp.isUsuallyFollowedBySpace('+')); 312 assertFalse("Comma", sp.isUsuallyFollowedBySpace(',')); 313 assertFalse("Minus", sp.isUsuallyFollowedBySpace('-')); 314 assertTrue("Period", sp.isUsuallyFollowedBySpace('.')); 315 assertFalse("Slash", sp.isUsuallyFollowedBySpace('/')); 316 assertFalse("Colon", sp.isUsuallyFollowedBySpace(':')); 317 assertFalse("Semicolon", sp.isUsuallyFollowedBySpace(';')); 318 assertFalse("L Angle", sp.isUsuallyFollowedBySpace('<')); 319 assertFalse("Equal", sp.isUsuallyFollowedBySpace('=')); 320 assertFalse("R Angle", sp.isUsuallyFollowedBySpace('>')); 321 assertFalse("Question", sp.isUsuallyFollowedBySpace('?')); 322 assertFalse("Atmark", sp.isUsuallyFollowedBySpace('@')); 323 assertFalse("L S Bracket", sp.isUsuallyFollowedBySpace('[')); 324 assertFalse("B Slash", sp.isUsuallyFollowedBySpace('\\')); 325 assertFalse("R S Bracket", sp.isUsuallyFollowedBySpace(']')); 326 assertFalse("Circumflex", sp.isUsuallyFollowedBySpace('^')); 327 assertFalse("Underscore", sp.isUsuallyFollowedBySpace('_')); 328 assertFalse("Grave", sp.isUsuallyFollowedBySpace('`')); 329 assertFalse("L C Brace", sp.isUsuallyFollowedBySpace('{')); 330 assertFalse("V Line", sp.isUsuallyFollowedBySpace('|')); 331 assertFalse("R C Brace", sp.isUsuallyFollowedBySpace('}')); 332 assertFalse("Tilde", sp.isUsuallyFollowedBySpace('~')); 333 } 334 335 public void isSentenceSeparator() { 336 testingStandardSentenceSeparator(ENGLISH); 337 try { 338 testingStandardSentenceSeparator(ARMENIA_ARMENIAN); 339 fail("Armenian Sentence Separator"); 340 } catch (final AssertionFailedError e) { 341 assertEquals("Period", e.getMessage()); 342 } 343 assertTrue(ARMENIA_ARMENIAN.isSentenceSeparator(ARMENIAN_FULL_STOP)); 344 assertFalse(ARMENIA_ARMENIAN.isSentenceSeparator(ARMENIAN_COMMA)); 345 } 346 347 public void testLanguageHasSpace() { 348 assertTrue(ENGLISH.mCurrentLanguageHasSpaces); 349 assertTrue(FRENCH.mCurrentLanguageHasSpaces); 350 assertTrue(GERMAN.mCurrentLanguageHasSpaces); 351 assertFalse(THAI.mCurrentLanguageHasSpaces); 352 assertFalse(CAMBODIA_KHMER.mCurrentLanguageHasSpaces); 353 assertFalse(LAOS_LAO.mCurrentLanguageHasSpaces); 354 // TODO: We should fix these. 355 assertTrue(KHMER.mCurrentLanguageHasSpaces); 356 assertTrue(LAO.mCurrentLanguageHasSpaces); 357 } 358 359 public void testUsesAmericanTypography() { 360 assertTrue(ENGLISH.mUsesAmericanTypography); 361 assertTrue(UNITED_STATES.mUsesAmericanTypography); 362 assertTrue(UNITED_KINGDOM.mUsesAmericanTypography); 363 assertTrue(INDIA_ENGLISH.mUsesAmericanTypography); 364 assertFalse(FRENCH.mUsesAmericanTypography); 365 assertFalse(GERMAN.mUsesAmericanTypography); 366 assertFalse(SWISS_GERMAN.mUsesAmericanTypography); 367 } 368 369 public void testUsesGermanRules() { 370 assertFalse(ENGLISH.mUsesGermanRules); 371 assertFalse(FRENCH.mUsesGermanRules); 372 assertTrue(GERMAN.mUsesGermanRules); 373 assertTrue(SWISS_GERMAN.mUsesGermanRules); 374 } 375 376 private static void testingStandardPunctuationSuggestions(final SpacingAndPunctuations sp) { 377 final SuggestedWords suggestedWords = sp.mSuggestPuncList; 378 assertFalse("typedWordValid", suggestedWords.mTypedWordValid); 379 assertFalse("willAutoCorrect", suggestedWords.mWillAutoCorrect); 380 assertTrue("isPunctuationSuggestions", suggestedWords.mIsPunctuationSuggestions); 381 assertFalse("isObsoleteSuggestions", suggestedWords.mIsObsoleteSuggestions); 382 assertFalse("isPrediction", suggestedWords.mIsPrediction); 383 final String[] punctuations = { 384 "!", "?", ",", ":", ";", "\"", "(", ")", "'", "-", "/", "@", "_" 385 }; 386 assertEquals("size", punctuations.length, suggestedWords.size()); 387 for (int index = 0; index < punctuations.length; index++) { 388 assertEquals("punctuation at " + index, 389 punctuations[index], suggestedWords.getWord(index)); 390 } 391 } 392 public void testPunctuationSuggestions() { 393 testingStandardPunctuationSuggestions(ENGLISH); 394 testingStandardPunctuationSuggestions(FRENCH); 395 testingStandardPunctuationSuggestions(GERMAN); 396 // TODO: Should fix these RTL languages 397 testingStandardPunctuationSuggestions(ARABIC); 398 testingStandardPunctuationSuggestions(PERSIAN); 399 testingStandardPunctuationSuggestions(HEBREW); 400 } 401} 402