10d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard/* 20d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard * Copyright (C) 2012 The Android Open Source Project 30d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard * 4ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 5ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * you may not use this file except in compliance with the License. 6ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * You may obtain a copy of the License at 70d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard * 8ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 90d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard * 100d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard * Unless required by applicable law or agreed to in writing, software 11ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 12ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * See the License for the specific language governing permissions and 14ce6bcdd1a547c9874f05a08074cafdfea16196d6Tadashi G. Takaoka * limitations under the License. 150d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard */ 160d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 170d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalardpackage com.android.inputmethod.latin; 180d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 19b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaokaimport android.test.suitebuilder.annotation.LargeTest; 20b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaoka 219f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalardimport com.android.inputmethod.latin.R; 229f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard 23b4598f7d05d6afd01ddc7ea0bed71dda837d1debTadashi G. Takaoka@LargeTest 240d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalardpublic class PunctuationTests extends InputTestsBase { 250d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 269f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard final String NEXT_WORD_PREDICTION_OPTION = "next_word_prediction"; 279f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard 280d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testWordThenSpaceThenPunctuationFromStripTwice() { 290d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "this "; 300d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String PUNCTUATION_FROM_STRIP = "!"; 310d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this!! "; 329f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard final boolean defaultNextWordPredictionOption = 3383f4a9866ab68ac452a57fa0c91d9fdf7aff8ddaJean Chalard mLatinIME.getResources().getBoolean(R.bool.config_default_next_word_prediction); 349f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard final boolean previousNextWordPredictionOption = 359f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard setBooleanPreference(NEXT_WORD_PREDICTION_OPTION, false, 369f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard defaultNextWordPredictionOption); 379f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard try { 389f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard mLatinIME.loadSettings(); 399f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard type(WORD_TO_TYPE); 409f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard sleep(DELAY_TO_WAIT_FOR_UNDERLINE); 419f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard runMessages(); 429f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard assertTrue("type word then type space should display punctuation strip", 439f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard mLatinIME.isShowingPunctuationList()); 449bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); 459bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); 469f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard assertEquals("type word then type space then punctuation from strip twice", 47d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 489f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard } finally { 499f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard setBooleanPreference(NEXT_WORD_PREDICTION_OPTION, previousNextWordPredictionOption, 509f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard defaultNextWordPredictionOption); 519f7392ea9d9313b276bda59ec488cd5f994c1894Jean Chalard } 520d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 530d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 540d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testWordThenSpaceThenPunctuationFromKeyboardTwice() { 550d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "this !!"; 560d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this !!"; 570d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 580d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("manual pick then space then punctuation from keyboard twice", EXPECTED_RESULT, 59d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka mEditText.getText().toString()); 600d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 610d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 620d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testManualPickThenPunctuationFromStripTwiceThenType() { 630d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD1_TO_TYPE = "this"; 640d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD2_TO_TYPE = "is"; 650d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String PUNCTUATION_FROM_STRIP = "!"; 660d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this!! is"; 670d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD1_TO_TYPE); 689bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, WORD1_TO_TYPE); 699bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); 709bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); 710d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD2_TO_TYPE); 720d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("pick word then pick punctuation twice then type", EXPECTED_RESULT, 73d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka mEditText.getText().toString()); 740d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 750d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 760d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testManualPickThenManualPickWithPunctAtStart() { 770d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD1_TO_TYPE = "this"; 780d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD2_TO_PICK = "!is"; 790d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this!is"; 800d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD1_TO_TYPE); 819bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, WORD1_TO_TYPE); 829bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(1, WORD2_TO_PICK); 830d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("manual pick then manual pick a word with punct at start", EXPECTED_RESULT, 84d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka mEditText.getText().toString()); 850d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 860d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 870d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testManuallyPickedWordThenColon() { 880d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "this"; 890d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String PUNCTUATION = ":"; 900d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this:"; 910d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 929bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, WORD_TO_TYPE); 930d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(PUNCTUATION); 940d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("manually pick word then colon", 95d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 960d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 970d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 980d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testManuallyPickedWordThenOpenParen() { 990d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "this"; 1000d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String PUNCTUATION = "("; 1010d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this ("; 1020d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 1039bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, WORD_TO_TYPE); 1040d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(PUNCTUATION); 1050d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("manually pick word then open paren", 106d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 1070d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 1080d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 1090d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testManuallyPickedWordThenCloseParen() { 1100d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "this"; 1110d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String PUNCTUATION = ")"; 1120d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this)"; 1130d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 1149bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, WORD_TO_TYPE); 1150d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(PUNCTUATION); 1160d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("manually pick word then close paren", 117d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 1180d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 1190d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 1200d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testManuallyPickedWordThenSmiley() { 1210d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "this"; 1220d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String SPECIAL_KEY = ":-)"; 1230d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this :-)"; 1240d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 1259bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, WORD_TO_TYPE); 1260d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard mLatinIME.onTextInput(SPECIAL_KEY); 1270d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("manually pick word then press the smiley key", 128d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 1290d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 1300d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 1310d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testManuallyPickedWordThenDotCom() { 1320d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "this"; 1330d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String SPECIAL_KEY = ".com"; 1340d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this.com"; 1350d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 1369bfb6202154e06d7156f2f374dd9359f1be4eb68Kurt Partridge pickSuggestionManually(0, WORD_TO_TYPE); 1370d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard mLatinIME.onTextInput(SPECIAL_KEY); 1380d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("manually pick word then press the .com key", 139d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 1400d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 1410d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 1420d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testTypeWordTypeDotThenPressDotCom() { 1430d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "this."; 1440d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String SPECIAL_KEY = ".com"; 1450d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "this.com"; 1460d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 1470d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard mLatinIME.onTextInput(SPECIAL_KEY); 1480d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("type word type dot then press the .com key", 149d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 1500d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 1510d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 1520d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testAutoCorrectionWithSingleQuoteInside() { 1530d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "you'f "; 1540d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "you'd "; 1550d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 1560d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("auto-correction with single quote inside", 157d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 1580d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 1590d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard 1600d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard public void testAutoCorrectionWithSingleQuotesAround() { 1610d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String WORD_TO_TYPE = "'tgis' "; 1620d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard final String EXPECTED_RESULT = "'this' "; 1630d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard type(WORD_TO_TYPE); 1640d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard assertEquals("auto-correction with single quotes around", 165d5781eef628c2cd4ac38029040746daa4679d637Satoshi Kataoka EXPECTED_RESULT, mEditText.getText().toString()); 1660d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard } 1670d708b0cf5eb4334995dc67ba4ad38b18467faebJean Chalard} 168