diff --git a/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java new file mode 100644 index 000000000..81f744da9 --- /dev/null +++ b/tests/src/com/android/inputmethod/latin/BlueUnderlineTests.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.android.inputmethod.latin; + +import com.android.inputmethod.keyboard.Keyboard; + +public class BlueUnderlineTests extends InputTestsBase { + + public void testBlueUnderline() { + final String STRING_TO_TYPE = "tgis"; + final int EXPECTED_SPAN_START = 0; + final int EXPECTED_SPAN_END = 4; + type(STRING_TO_TYPE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + final Span span = new Span(mTextView.getText()); + assertEquals("show blue underline, span start", EXPECTED_SPAN_START, span.mStart); + assertEquals("show blue underline, span end", EXPECTED_SPAN_END, span.mEnd); + assertEquals("show blue underline, span color", true, span.isAutoCorrectionIndicator()); + } + + public void testBlueUnderlineDisappears() { + final String STRING_1_TO_TYPE = "tgis"; + final String STRING_2_TO_TYPE = "q"; + final int EXPECTED_SPAN_START = 0; + final int EXPECTED_SPAN_END = 5; + type(STRING_1_TO_TYPE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + type(STRING_2_TO_TYPE); + // We haven't have time to look into the dictionary yet, so the line should still be + // blue to avoid any flicker. + final Span spanBefore = new Span(mTextView.getText()); + assertEquals("extend blue underline, span start", EXPECTED_SPAN_START, spanBefore.mStart); + assertEquals("extend blue underline, span end", EXPECTED_SPAN_END, spanBefore.mEnd); + assertEquals("extend blue underline, span color", true, + spanBefore.isAutoCorrectionIndicator()); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + // Now we have been able to re-evaluate the word, there shouldn't be an auto-correction span + final Span spanAfter = new Span(mTextView.getText()); + assertNull("hide blue underline", spanAfter.mSpan); + } + + public void testBlueUnderlineOnBackspace() { + final String STRING_TO_TYPE = "tgis"; + final int EXPECTED_SPAN_START = 0; + final int EXPECTED_SPAN_END = 4; + type(STRING_TO_TYPE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + type(Keyboard.CODE_SPACE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + type(Keyboard.CODE_DELETE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + type(Keyboard.CODE_DELETE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + final Span span = new Span(mTextView.getText()); + assertEquals("show blue underline after backspace, span start", + EXPECTED_SPAN_START, span.mStart); + assertEquals("show blue underline after backspace, span end", + EXPECTED_SPAN_END, span.mEnd); + assertEquals("show blue underline after backspace, span color", true, + span.isAutoCorrectionIndicator()); + } + + public void testBlueUnderlineDisappearsWhenCursorMoved() { + final String STRING_TO_TYPE = "tgis"; + final int NEW_CURSOR_POSITION = 0; + type(STRING_TO_TYPE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + // Simulate the onUpdateSelection() event + mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1); + runMessages(); + // Here the blue underline has been set. testBlueUnderline() is testing for this already, + // so let's not test it here again. + // Now simulate the user moving the cursor. + mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION); + mLatinIME.onUpdateSelection(0, 0, NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + final Span span = new Span(mTextView.getText()); + assertNull("blue underline removed when cursor is moved", span.mSpan); + } +} diff --git a/tests/src/com/android/inputmethod/latin/InputLogicFrenchTests.java b/tests/src/com/android/inputmethod/latin/InputLogicFrenchTests.java new file mode 100644 index 000000000..5db120d82 --- /dev/null +++ b/tests/src/com/android/inputmethod/latin/InputLogicFrenchTests.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.android.inputmethod.latin; + +import com.android.inputmethod.keyboard.Keyboard; + +public class InputLogicFrenchTests extends InputTestsBase { + + public void testAutoCorrectForFrench() { + final String STRING_TO_TYPE = "irq "; + final String EXPECTED_RESULT = "ira "; + changeLanguage("fr"); + type(STRING_TO_TYPE); + assertEquals("simple auto-correct for French", EXPECTED_RESULT, + mTextView.getText().toString()); + } + + public void testManualPickThenSeparatorForFrench() { + final String WORD1_TO_TYPE = "test"; + final String WORD2_TO_TYPE = "!"; + final String EXPECTED_RESULT = "test !"; + changeLanguage("fr"); + type(WORD1_TO_TYPE); + mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE); + type(WORD2_TO_TYPE); + assertEquals("manual pick then separator for French", EXPECTED_RESULT, + mTextView.getText().toString()); + } + + public void testWordThenSpaceThenPunctuationFromStripTwiceForFrench() { + final String WORD_TO_TYPE = "test "; + final String PUNCTUATION_FROM_STRIP = "!"; + final String EXPECTED_RESULT = "test !!"; + changeLanguage("fr"); + type(WORD_TO_TYPE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + assertTrue("type word then type space should display punctuation strip", + mLatinIME.isShowingPunctuationList()); + mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); + mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); + assertEquals("type word then type space then punctuation from strip twice for French", + EXPECTED_RESULT, mTextView.getText().toString()); + } +} diff --git a/tests/src/com/android/inputmethod/latin/InputLogicTests.java b/tests/src/com/android/inputmethod/latin/InputLogicTests.java index cbfe8b212..11eb6ab19 100644 --- a/tests/src/com/android/inputmethod/latin/InputLogicTests.java +++ b/tests/src/com/android/inputmethod/latin/InputLogicTests.java @@ -109,15 +109,6 @@ public class InputLogicTests extends InputTestsBase { assertEquals("simple auto-correct", EXPECTED_RESULT, mTextView.getText().toString()); } - public void testAutoCorrectForFrench() { - final String STRING_TO_TYPE = "irq "; - final String EXPECTED_RESULT = "ira "; - changeLanguage("fr"); - type(STRING_TO_TYPE); - assertEquals("simple auto-correct for French", EXPECTED_RESULT, - mTextView.getText().toString()); - } - public void testAutoCorrectWithPeriod() { final String STRING_TO_TYPE = "tgis."; final String EXPECTED_RESULT = "this."; @@ -205,71 +196,6 @@ public class InputLogicTests extends InputTestsBase { assertEquals("manual pick then separator", EXPECTED_RESULT, mTextView.getText().toString()); } - public void testWordThenSpaceThenPunctuationFromStripTwice() { - final String WORD_TO_TYPE = "this "; - final String PUNCTUATION_FROM_STRIP = "!"; - final String EXPECTED_RESULT = "this!! "; - type(WORD_TO_TYPE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - assertTrue("type word then type space should display punctuation strip", - mLatinIME.isShowingPunctuationList()); - mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); - mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); - assertEquals("type word then type space then punctuation from strip twice", EXPECTED_RESULT, - mTextView.getText().toString()); - } - - public void testManualPickThenSeparatorForFrench() { - final String WORD1_TO_TYPE = "test"; - final String WORD2_TO_TYPE = "!"; - final String EXPECTED_RESULT = "test !"; - changeLanguage("fr"); - type(WORD1_TO_TYPE); - mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE); - type(WORD2_TO_TYPE); - assertEquals("manual pick then separator for French", EXPECTED_RESULT, - mTextView.getText().toString()); - } - - public void testWordThenSpaceThenPunctuationFromStripTwiceForFrench() { - final String WORD_TO_TYPE = "test "; - final String PUNCTUATION_FROM_STRIP = "!"; - final String EXPECTED_RESULT = "test !!"; - changeLanguage("fr"); - type(WORD_TO_TYPE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - assertTrue("type word then type space should display punctuation strip", - mLatinIME.isShowingPunctuationList()); - mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); - mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); - assertEquals("type word then type space then punctuation from strip twice for French", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testWordThenSpaceThenPunctuationFromKeyboardTwice() { - final String WORD_TO_TYPE = "this !!"; - final String EXPECTED_RESULT = "this !!"; - type(WORD_TO_TYPE); - assertEquals("manual pick then space then punctuation from keyboard twice", EXPECTED_RESULT, - mTextView.getText().toString()); - } - - public void testManualPickThenPunctuationFromStripTwiceThenType() { - final String WORD1_TO_TYPE = "this"; - final String WORD2_TO_TYPE = "is"; - final String PUNCTUATION_FROM_STRIP = "!"; - final String EXPECTED_RESULT = "this!! is"; - type(WORD1_TO_TYPE); - mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE); - mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); - mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); - type(WORD2_TO_TYPE); - assertEquals("pick word then pick punctuation twice then type", EXPECTED_RESULT, - mTextView.getText().toString()); - } - public void testManualPickThenSpaceThenType() { final String WORD1_TO_TYPE = "this"; final String WORD2_TO_TYPE = " is"; @@ -295,17 +221,6 @@ public class InputLogicTests extends InputTestsBase { mTextView.getText().toString()); } - public void testManualPickThenManualPickWithPunctAtStart() { - final String WORD1_TO_TYPE = "this"; - final String WORD2_TO_PICK = "!is"; - final String EXPECTED_RESULT = "this!is"; - type(WORD1_TO_TYPE); - mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE); - mLatinIME.pickSuggestionManually(1, WORD2_TO_PICK); - assertEquals("manual pick then manual pick a word with punct at start", EXPECTED_RESULT, - mTextView.getText().toString()); - } - public void testDeleteWholeComposingWord() { final String WORD_TO_TYPE = "this"; type(WORD_TO_TYPE); @@ -314,166 +229,5 @@ public class InputLogicTests extends InputTestsBase { } assertEquals("delete whole composing word", "", mTextView.getText().toString()); } - - public void testManuallyPickedWordThenColon() { - final String WORD_TO_TYPE = "this"; - final String PUNCTUATION = ":"; - final String EXPECTED_RESULT = "this:"; - type(WORD_TO_TYPE); - mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); - type(PUNCTUATION); - assertEquals("manually pick word then colon", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testManuallyPickedWordThenOpenParen() { - final String WORD_TO_TYPE = "this"; - final String PUNCTUATION = "("; - final String EXPECTED_RESULT = "this ("; - type(WORD_TO_TYPE); - mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); - type(PUNCTUATION); - assertEquals("manually pick word then open paren", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testManuallyPickedWordThenCloseParen() { - final String WORD_TO_TYPE = "this"; - final String PUNCTUATION = ")"; - final String EXPECTED_RESULT = "this)"; - type(WORD_TO_TYPE); - mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); - type(PUNCTUATION); - assertEquals("manually pick word then close paren", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testManuallyPickedWordThenSmiley() { - final String WORD_TO_TYPE = "this"; - final String SPECIAL_KEY = ":-)"; - final String EXPECTED_RESULT = "this :-)"; - type(WORD_TO_TYPE); - mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); - mLatinIME.onTextInput(SPECIAL_KEY); - assertEquals("manually pick word then press the smiley key", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testManuallyPickedWordThenDotCom() { - final String WORD_TO_TYPE = "this"; - final String SPECIAL_KEY = ".com"; - final String EXPECTED_RESULT = "this.com"; - type(WORD_TO_TYPE); - mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); - mLatinIME.onTextInput(SPECIAL_KEY); - assertEquals("manually pick word then press the .com key", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testTypeWordTypeDotThenPressDotCom() { - final String WORD_TO_TYPE = "this."; - final String SPECIAL_KEY = ".com"; - final String EXPECTED_RESULT = "this.com"; - type(WORD_TO_TYPE); - mLatinIME.onTextInput(SPECIAL_KEY); - assertEquals("type word type dot then press the .com key", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testAutoCorrectionWithSingleQuoteInside() { - final String WORD_TO_TYPE = "you'f "; - final String EXPECTED_RESULT = "you'd "; - type(WORD_TO_TYPE); - assertEquals("auto-correction with single quote inside", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testAutoCorrectionWithSingleQuotesAround() { - final String WORD_TO_TYPE = "'tgis' "; - final String EXPECTED_RESULT = "'this' "; - type(WORD_TO_TYPE); - assertEquals("auto-correction with single quotes around", - EXPECTED_RESULT, mTextView.getText().toString()); - } - - public void testBlueUnderline() { - final String STRING_TO_TYPE = "tgis"; - final int EXPECTED_SPAN_START = 0; - final int EXPECTED_SPAN_END = 4; - type(STRING_TO_TYPE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - final Span span = new Span(mTextView.getText()); - assertEquals("show blue underline, span start", EXPECTED_SPAN_START, span.mStart); - assertEquals("show blue underline, span end", EXPECTED_SPAN_END, span.mEnd); - assertEquals("show blue underline, span color", true, span.isAutoCorrectionIndicator()); - } - - public void testBlueUnderlineDisappears() { - final String STRING_1_TO_TYPE = "tgis"; - final String STRING_2_TO_TYPE = "q"; - final int EXPECTED_SPAN_START = 0; - final int EXPECTED_SPAN_END = 5; - type(STRING_1_TO_TYPE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - type(STRING_2_TO_TYPE); - // We haven't have time to look into the dictionary yet, so the line should still be - // blue to avoid any flicker. - final Span spanBefore = new Span(mTextView.getText()); - assertEquals("extend blue underline, span start", EXPECTED_SPAN_START, spanBefore.mStart); - assertEquals("extend blue underline, span end", EXPECTED_SPAN_END, spanBefore.mEnd); - assertEquals("extend blue underline, span color", true, - spanBefore.isAutoCorrectionIndicator()); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - // Now we have been able to re-evaluate the word, there shouldn't be an auto-correction span - final Span spanAfter = new Span(mTextView.getText()); - assertNull("hide blue underline", spanAfter.mSpan); - } - - public void testBlueUnderlineOnBackspace() { - final String STRING_TO_TYPE = "tgis"; - final int EXPECTED_SPAN_START = 0; - final int EXPECTED_SPAN_END = 4; - type(STRING_TO_TYPE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - type(Keyboard.CODE_SPACE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - type(Keyboard.CODE_DELETE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - type(Keyboard.CODE_DELETE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - final Span span = new Span(mTextView.getText()); - assertEquals("show blue underline after backspace, span start", - EXPECTED_SPAN_START, span.mStart); - assertEquals("show blue underline after backspace, span end", - EXPECTED_SPAN_END, span.mEnd); - assertEquals("show blue underline after backspace, span color", true, - span.isAutoCorrectionIndicator()); - } - - public void testBlueUnderlineDisappearsWhenCursorMoved() { - final String STRING_TO_TYPE = "tgis"; - final int NEW_CURSOR_POSITION = 0; - type(STRING_TO_TYPE); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - // Simulate the onUpdateSelection() event - mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1); - runMessages(); - // Here the blue underline has been set. testBlueUnderline() is testing for this already, - // so let's not test it here again. - // Now simulate the user moving the cursor. - mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION); - mLatinIME.onUpdateSelection(0, 0, NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1); - sleep(DELAY_TO_WAIT_FOR_UNDERLINE); - runMessages(); - final Span span = new Span(mTextView.getText()); - assertNull("blue underline removed when cursor is moved", span.mSpan); - } // TODO: Add some tests for non-BMP characters } diff --git a/tests/src/com/android/inputmethod/latin/PunctuationTests.java b/tests/src/com/android/inputmethod/latin/PunctuationTests.java new file mode 100644 index 000000000..cc549bceb --- /dev/null +++ b/tests/src/com/android/inputmethod/latin/PunctuationTests.java @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.android.inputmethod.latin; + +import com.android.inputmethod.keyboard.Keyboard; + +public class PunctuationTests extends InputTestsBase { + + public void testWordThenSpaceThenPunctuationFromStripTwice() { + final String WORD_TO_TYPE = "this "; + final String PUNCTUATION_FROM_STRIP = "!"; + final String EXPECTED_RESULT = "this!! "; + type(WORD_TO_TYPE); + sleep(DELAY_TO_WAIT_FOR_UNDERLINE); + runMessages(); + assertTrue("type word then type space should display punctuation strip", + mLatinIME.isShowingPunctuationList()); + mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); + mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); + assertEquals("type word then type space then punctuation from strip twice", EXPECTED_RESULT, + mTextView.getText().toString()); + } + + public void testWordThenSpaceThenPunctuationFromKeyboardTwice() { + final String WORD_TO_TYPE = "this !!"; + final String EXPECTED_RESULT = "this !!"; + type(WORD_TO_TYPE); + assertEquals("manual pick then space then punctuation from keyboard twice", EXPECTED_RESULT, + mTextView.getText().toString()); + } + + public void testManualPickThenPunctuationFromStripTwiceThenType() { + final String WORD1_TO_TYPE = "this"; + final String WORD2_TO_TYPE = "is"; + final String PUNCTUATION_FROM_STRIP = "!"; + final String EXPECTED_RESULT = "this!! is"; + type(WORD1_TO_TYPE); + mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE); + mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); + mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); + type(WORD2_TO_TYPE); + assertEquals("pick word then pick punctuation twice then type", EXPECTED_RESULT, + mTextView.getText().toString()); + } + + public void testManualPickThenManualPickWithPunctAtStart() { + final String WORD1_TO_TYPE = "this"; + final String WORD2_TO_PICK = "!is"; + final String EXPECTED_RESULT = "this!is"; + type(WORD1_TO_TYPE); + mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE); + mLatinIME.pickSuggestionManually(1, WORD2_TO_PICK); + assertEquals("manual pick then manual pick a word with punct at start", EXPECTED_RESULT, + mTextView.getText().toString()); + } + + public void testManuallyPickedWordThenColon() { + final String WORD_TO_TYPE = "this"; + final String PUNCTUATION = ":"; + final String EXPECTED_RESULT = "this:"; + type(WORD_TO_TYPE); + mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); + type(PUNCTUATION); + assertEquals("manually pick word then colon", + EXPECTED_RESULT, mTextView.getText().toString()); + } + + public void testManuallyPickedWordThenOpenParen() { + final String WORD_TO_TYPE = "this"; + final String PUNCTUATION = "("; + final String EXPECTED_RESULT = "this ("; + type(WORD_TO_TYPE); + mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); + type(PUNCTUATION); + assertEquals("manually pick word then open paren", + EXPECTED_RESULT, mTextView.getText().toString()); + } + + public void testManuallyPickedWordThenCloseParen() { + final String WORD_TO_TYPE = "this"; + final String PUNCTUATION = ")"; + final String EXPECTED_RESULT = "this)"; + type(WORD_TO_TYPE); + mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); + type(PUNCTUATION); + assertEquals("manually pick word then close paren", + EXPECTED_RESULT, mTextView.getText().toString()); + } + + public void testManuallyPickedWordThenSmiley() { + final String WORD_TO_TYPE = "this"; + final String SPECIAL_KEY = ":-)"; + final String EXPECTED_RESULT = "this :-)"; + type(WORD_TO_TYPE); + mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); + mLatinIME.onTextInput(SPECIAL_KEY); + assertEquals("manually pick word then press the smiley key", + EXPECTED_RESULT, mTextView.getText().toString()); + } + + public void testManuallyPickedWordThenDotCom() { + final String WORD_TO_TYPE = "this"; + final String SPECIAL_KEY = ".com"; + final String EXPECTED_RESULT = "this.com"; + type(WORD_TO_TYPE); + mLatinIME.pickSuggestionManually(0, WORD_TO_TYPE); + mLatinIME.onTextInput(SPECIAL_KEY); + assertEquals("manually pick word then press the .com key", + EXPECTED_RESULT, mTextView.getText().toString()); + } + + public void testTypeWordTypeDotThenPressDotCom() { + final String WORD_TO_TYPE = "this."; + final String SPECIAL_KEY = ".com"; + final String EXPECTED_RESULT = "this.com"; + type(WORD_TO_TYPE); + mLatinIME.onTextInput(SPECIAL_KEY); + assertEquals("type word type dot then press the .com key", + EXPECTED_RESULT, mTextView.getText().toString()); + } + + public void testAutoCorrectionWithSingleQuoteInside() { + final String WORD_TO_TYPE = "you'f "; + final String EXPECTED_RESULT = "you'd "; + type(WORD_TO_TYPE); + assertEquals("auto-correction with single quote inside", + EXPECTED_RESULT, mTextView.getText().toString()); + } + + public void testAutoCorrectionWithSingleQuotesAround() { + final String WORD_TO_TYPE = "'tgis' "; + final String EXPECTED_RESULT = "'this' "; + type(WORD_TO_TYPE); + assertEquals("auto-correction with single quotes around", + EXPECTED_RESULT, mTextView.getText().toString()); + } +}