1 /* 2 * Copyright (C) 2012 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 17 package com.android.inputmethod.latin; 18 19 import android.test.suitebuilder.annotation.LargeTest; 20 21 import com.android.inputmethod.latin.R; 22 23 @LargeTest 24 public class PunctuationTests extends InputTestsBase { 25 26 final String NEXT_WORD_PREDICTION_OPTION = "next_word_prediction"; 27 28 public void testWordThenSpaceThenPunctuationFromStripTwice() { 29 final String WORD_TO_TYPE = "this "; 30 final String PUNCTUATION_FROM_STRIP = "!"; 31 final String EXPECTED_RESULT = "this!! "; 32 final boolean defaultNextWordPredictionOption = 33 mLatinIME.getResources().getBoolean(R.bool.config_default_next_word_prediction); 34 final boolean previousNextWordPredictionOption = 35 setBooleanPreference(NEXT_WORD_PREDICTION_OPTION, false, 36 defaultNextWordPredictionOption); 37 try { 38 mLatinIME.loadSettings(); 39 type(WORD_TO_TYPE); 40 sleep(DELAY_TO_WAIT_FOR_UNDERLINE); 41 runMessages(); 42 assertTrue("type word then type space should display punctuation strip", 43 mLatinIME.isShowingPunctuationList()); 44 pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); 45 pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); 46 assertEquals("type word then type space then punctuation from strip twice", 47 EXPECTED_RESULT, mEditText.getText().toString()); 48 } finally { 49 setBooleanPreference(NEXT_WORD_PREDICTION_OPTION, previousNextWordPredictionOption, 50 defaultNextWordPredictionOption); 51 } 52 } 53 54 public void testWordThenSpaceThenPunctuationFromKeyboardTwice() { 55 final String WORD_TO_TYPE = "this !!"; 56 final String EXPECTED_RESULT = "this !!"; 57 type(WORD_TO_TYPE); 58 assertEquals("manual pick then space then punctuation from keyboard twice", EXPECTED_RESULT, 59 mEditText.getText().toString()); 60 } 61 62 public void testManualPickThenPunctuationFromStripTwiceThenType() { 63 final String WORD1_TO_TYPE = "this"; 64 final String WORD2_TO_TYPE = "is"; 65 final String PUNCTUATION_FROM_STRIP = "!"; 66 final String EXPECTED_RESULT = "this!! is"; 67 type(WORD1_TO_TYPE); 68 pickSuggestionManually(0, WORD1_TO_TYPE); 69 pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); 70 pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); 71 type(WORD2_TO_TYPE); 72 assertEquals("pick word then pick punctuation twice then type", EXPECTED_RESULT, 73 mEditText.getText().toString()); 74 } 75 76 public void testManualPickThenManualPickWithPunctAtStart() { 77 final String WORD1_TO_TYPE = "this"; 78 final String WORD2_TO_PICK = "!is"; 79 final String EXPECTED_RESULT = "this!is"; 80 type(WORD1_TO_TYPE); 81 pickSuggestionManually(0, WORD1_TO_TYPE); 82 pickSuggestionManually(1, WORD2_TO_PICK); 83 assertEquals("manual pick then manual pick a word with punct at start", EXPECTED_RESULT, 84 mEditText.getText().toString()); 85 } 86 87 public void testManuallyPickedWordThenColon() { 88 final String WORD_TO_TYPE = "this"; 89 final String PUNCTUATION = ":"; 90 final String EXPECTED_RESULT = "this:"; 91 type(WORD_TO_TYPE); 92 pickSuggestionManually(0, WORD_TO_TYPE); 93 type(PUNCTUATION); 94 assertEquals("manually pick word then colon", 95 EXPECTED_RESULT, mEditText.getText().toString()); 96 } 97 98 public void testManuallyPickedWordThenOpenParen() { 99 final String WORD_TO_TYPE = "this"; 100 final String PUNCTUATION = "("; 101 final String EXPECTED_RESULT = "this ("; 102 type(WORD_TO_TYPE); 103 pickSuggestionManually(0, WORD_TO_TYPE); 104 type(PUNCTUATION); 105 assertEquals("manually pick word then open paren", 106 EXPECTED_RESULT, mEditText.getText().toString()); 107 } 108 109 public void testManuallyPickedWordThenCloseParen() { 110 final String WORD_TO_TYPE = "this"; 111 final String PUNCTUATION = ")"; 112 final String EXPECTED_RESULT = "this)"; 113 type(WORD_TO_TYPE); 114 pickSuggestionManually(0, WORD_TO_TYPE); 115 type(PUNCTUATION); 116 assertEquals("manually pick word then close paren", 117 EXPECTED_RESULT, mEditText.getText().toString()); 118 } 119 120 public void testManuallyPickedWordThenSmiley() { 121 final String WORD_TO_TYPE = "this"; 122 final String SPECIAL_KEY = ":-)"; 123 final String EXPECTED_RESULT = "this :-)"; 124 type(WORD_TO_TYPE); 125 pickSuggestionManually(0, WORD_TO_TYPE); 126 mLatinIME.onTextInput(SPECIAL_KEY); 127 assertEquals("manually pick word then press the smiley key", 128 EXPECTED_RESULT, mEditText.getText().toString()); 129 } 130 131 public void testManuallyPickedWordThenDotCom() { 132 final String WORD_TO_TYPE = "this"; 133 final String SPECIAL_KEY = ".com"; 134 final String EXPECTED_RESULT = "this.com"; 135 type(WORD_TO_TYPE); 136 pickSuggestionManually(0, WORD_TO_TYPE); 137 mLatinIME.onTextInput(SPECIAL_KEY); 138 assertEquals("manually pick word then press the .com key", 139 EXPECTED_RESULT, mEditText.getText().toString()); 140 } 141 142 public void testTypeWordTypeDotThenPressDotCom() { 143 final String WORD_TO_TYPE = "this."; 144 final String SPECIAL_KEY = ".com"; 145 final String EXPECTED_RESULT = "this.com"; 146 type(WORD_TO_TYPE); 147 mLatinIME.onTextInput(SPECIAL_KEY); 148 assertEquals("type word type dot then press the .com key", 149 EXPECTED_RESULT, mEditText.getText().toString()); 150 } 151 152 public void testAutoCorrectionWithSingleQuoteInside() { 153 final String WORD_TO_TYPE = "you'f "; 154 final String EXPECTED_RESULT = "you'd "; 155 type(WORD_TO_TYPE); 156 assertEquals("auto-correction with single quote inside", 157 EXPECTED_RESULT, mEditText.getText().toString()); 158 } 159 160 public void testAutoCorrectionWithSingleQuotesAround() { 161 final String WORD_TO_TYPE = "'tgis' "; 162 final String EXPECTED_RESULT = "'this' "; 163 type(WORD_TO_TYPE); 164 assertEquals("auto-correction with single quotes around", 165 EXPECTED_RESULT, mEditText.getText().toString()); 166 } 167 } 168