am 8fff6ae6
: Merge "Add the first gesture unit tests."
* commit '8fff6ae68b3c2e31687370fc867d3b6098938be7': Add the first gesture unit tests.
This commit is contained in:
commit
2afcc0ab72
7 changed files with 98 additions and 32 deletions
|
@ -28,7 +28,7 @@ public class BlueUnderlineTests extends InputTestsBase {
|
||||||
final int EXPECTED_SPAN_START = 0;
|
final int EXPECTED_SPAN_START = 0;
|
||||||
final int EXPECTED_SPAN_END = 4;
|
final int EXPECTED_SPAN_END = 4;
|
||||||
type(STRING_TO_TYPE);
|
type(STRING_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
||||||
assertEquals("show blue underline, span start", EXPECTED_SPAN_START, span.mStart);
|
assertEquals("show blue underline, span start", EXPECTED_SPAN_START, span.mStart);
|
||||||
|
@ -42,7 +42,7 @@ public class BlueUnderlineTests extends InputTestsBase {
|
||||||
final int EXPECTED_SPAN_START = 0;
|
final int EXPECTED_SPAN_START = 0;
|
||||||
final int EXPECTED_SPAN_END = 5;
|
final int EXPECTED_SPAN_END = 5;
|
||||||
type(STRING_1_TO_TYPE);
|
type(STRING_1_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
type(STRING_2_TO_TYPE);
|
type(STRING_2_TO_TYPE);
|
||||||
// We haven't have time to look into the dictionary yet, so the line should still be
|
// We haven't have time to look into the dictionary yet, so the line should still be
|
||||||
|
@ -51,7 +51,7 @@ public class BlueUnderlineTests extends InputTestsBase {
|
||||||
assertEquals("extend blue underline, span start", EXPECTED_SPAN_START, spanBefore.mStart);
|
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 end", EXPECTED_SPAN_END, spanBefore.mEnd);
|
||||||
assertTrue("extend blue underline, span color", spanBefore.isAutoCorrectionIndicator());
|
assertTrue("extend blue underline, span color", spanBefore.isAutoCorrectionIndicator());
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// Now we have been able to re-evaluate the word, there shouldn't be an auto-correction span
|
// Now we have been able to re-evaluate the word, there shouldn't be an auto-correction span
|
||||||
final SpanGetter spanAfter = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
final SpanGetter spanAfter = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
||||||
|
@ -65,18 +65,18 @@ public class BlueUnderlineTests extends InputTestsBase {
|
||||||
final int EXPECTED_UNDERLINE_SPAN_START = 0;
|
final int EXPECTED_UNDERLINE_SPAN_START = 0;
|
||||||
final int EXPECTED_UNDERLINE_SPAN_END = 3;
|
final int EXPECTED_UNDERLINE_SPAN_END = 3;
|
||||||
type(STRING_TO_TYPE);
|
type(STRING_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
type(Constants.CODE_SPACE);
|
type(Constants.CODE_SPACE);
|
||||||
// typedLength + 1 because we also typed a space
|
// typedLength + 1 because we also typed a space
|
||||||
mLatinIME.onUpdateSelection(0, 0, typedLength + 1, typedLength + 1, -1, -1);
|
mLatinIME.onUpdateSelection(0, 0, typedLength + 1, typedLength + 1, -1, -1);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
type(Constants.CODE_DELETE);
|
type(Constants.CODE_DELETE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
type(Constants.CODE_DELETE);
|
type(Constants.CODE_DELETE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
final SpanGetter suggestionSpan = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
final SpanGetter suggestionSpan = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
||||||
assertFalse("show no blue underline after backspace, span should not be the auto-"
|
assertFalse("show no blue underline after backspace, span should not be the auto-"
|
||||||
|
@ -93,7 +93,7 @@ public class BlueUnderlineTests extends InputTestsBase {
|
||||||
final int typedLength = STRING_TO_TYPE.length();
|
final int typedLength = STRING_TO_TYPE.length();
|
||||||
final int NEW_CURSOR_POSITION = 0;
|
final int NEW_CURSOR_POSITION = 0;
|
||||||
type(STRING_TO_TYPE);
|
type(STRING_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
// Simulate the onUpdateSelection() event
|
// Simulate the onUpdateSelection() event
|
||||||
mLatinIME.onUpdateSelection(0, 0, typedLength, typedLength, -1, -1);
|
mLatinIME.onUpdateSelection(0, 0, typedLength, typedLength, -1, -1);
|
||||||
runMessages();
|
runMessages();
|
||||||
|
@ -103,7 +103,7 @@ public class BlueUnderlineTests extends InputTestsBase {
|
||||||
mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION);
|
mInputConnection.setSelection(NEW_CURSOR_POSITION, NEW_CURSOR_POSITION);
|
||||||
mLatinIME.onUpdateSelection(typedLength, typedLength,
|
mLatinIME.onUpdateSelection(typedLength, typedLength,
|
||||||
NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
|
NEW_CURSOR_POSITION, NEW_CURSOR_POSITION, -1, -1);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
final SpanGetter span = new SpanGetter(mEditText.getText(), SuggestionSpan.class);
|
||||||
assertFalse("blue underline removed when cursor is moved",
|
assertFalse("blue underline removed when cursor is moved",
|
||||||
|
@ -113,7 +113,7 @@ public class BlueUnderlineTests extends InputTestsBase {
|
||||||
public void testComposingStopsOnSpace() {
|
public void testComposingStopsOnSpace() {
|
||||||
final String STRING_TO_TYPE = "this ";
|
final String STRING_TO_TYPE = "this ";
|
||||||
type(STRING_TO_TYPE);
|
type(STRING_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
// Simulate the onUpdateSelection() event
|
// Simulate the onUpdateSelection() event
|
||||||
mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
|
mLatinIME.onUpdateSelection(0, 0, STRING_TO_TYPE.length(), STRING_TO_TYPE.length(), -1, -1);
|
||||||
runMessages();
|
runMessages();
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
package com.android.inputmethod.latin;
|
package com.android.inputmethod.latin;
|
||||||
|
|
||||||
|
import android.test.MoreAsserts;
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
import android.test.suitebuilder.annotation.LargeTest;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.view.inputmethod.BaseInputConnection;
|
import android.view.inputmethod.BaseInputConnection;
|
||||||
|
@ -487,7 +488,7 @@ public class InputLogicTests extends InputTestsBase {
|
||||||
public void testPredictionsAfterSpace() {
|
public void testPredictionsAfterSpace() {
|
||||||
final String WORD_TO_TYPE = "Barack ";
|
final String WORD_TO_TYPE = "Barack ";
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// Test the first prediction is displayed
|
// Test the first prediction is displayed
|
||||||
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
|
@ -499,17 +500,17 @@ public class InputLogicTests extends InputTestsBase {
|
||||||
mLatinIME.clearPersonalizedDictionariesForTest();
|
mLatinIME.clearPersonalizedDictionariesForTest();
|
||||||
final String WORD_TO_TYPE = "Barack ";
|
final String WORD_TO_TYPE = "Barack ";
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// No need to test here, testPredictionsAfterSpace is testing it already
|
// No need to test here, testPredictionsAfterSpace is testing it already
|
||||||
type(" ");
|
type(" ");
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// Test the predictions have been cleared
|
// Test the predictions have been cleared
|
||||||
SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
assertEquals("predictions cleared after double-space-to-period", suggestedWords.size(), 0);
|
assertEquals("predictions cleared after double-space-to-period", suggestedWords.size(), 0);
|
||||||
type(Constants.CODE_DELETE);
|
type(Constants.CODE_DELETE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// Test the first prediction is displayed
|
// Test the first prediction is displayed
|
||||||
suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
|
@ -522,7 +523,7 @@ public class InputLogicTests extends InputTestsBase {
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
// Choose the auto-correction. For "Barack", the auto-correction should be "Barack".
|
// Choose the auto-correction. For "Barack", the auto-correction should be "Barack".
|
||||||
pickSuggestionManually(WORD_TO_TYPE);
|
pickSuggestionManually(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// Test the first prediction is displayed
|
// Test the first prediction is displayed
|
||||||
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
|
@ -534,13 +535,13 @@ public class InputLogicTests extends InputTestsBase {
|
||||||
mLatinIME.clearPersonalizedDictionariesForTest();
|
mLatinIME.clearPersonalizedDictionariesForTest();
|
||||||
final String WORD_TO_TYPE = "Barack. ";
|
final String WORD_TO_TYPE = "Barack. ";
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
assertEquals("No prediction after period after inputting once.", 0, suggestedWords.size());
|
assertEquals("No prediction after period after inputting once.", 0, suggestedWords.size());
|
||||||
|
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
assertEquals("Beginning-of-Sentence prediction after inputting 2 times.", "Barack",
|
assertEquals("Beginning-of-Sentence prediction after inputting 2 times.", "Barack",
|
||||||
|
@ -565,18 +566,18 @@ public class InputLogicTests extends InputTestsBase {
|
||||||
type(" ");
|
type(" ");
|
||||||
mLatinIME.onUpdateSelection(endOfSuggestion, endOfSuggestion,
|
mLatinIME.onUpdateSelection(endOfSuggestion, endOfSuggestion,
|
||||||
endOfSuggestion + 1, endOfSuggestion + 1, -1, -1);
|
endOfSuggestion + 1, endOfSuggestion + 1, -1, -1);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// Simulate a manual cursor move
|
// Simulate a manual cursor move
|
||||||
mInputConnection.setSelection(indexForManualCursor, indexForManualCursor);
|
mInputConnection.setSelection(indexForManualCursor, indexForManualCursor);
|
||||||
mLatinIME.onUpdateSelection(endOfSuggestion + 1, endOfSuggestion + 1,
|
mLatinIME.onUpdateSelection(endOfSuggestion + 1, endOfSuggestion + 1,
|
||||||
indexForManualCursor, indexForManualCursor, -1, -1);
|
indexForManualCursor, indexForManualCursor, -1, -1);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
pickSuggestionManually(WORD_TO_TYPE);
|
pickSuggestionManually(WORD_TO_TYPE);
|
||||||
mLatinIME.onUpdateSelection(indexForManualCursor, indexForManualCursor,
|
mLatinIME.onUpdateSelection(indexForManualCursor, indexForManualCursor,
|
||||||
endOfWord, endOfWord, -1, -1);
|
endOfWord, endOfWord, -1, -1);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// Test the first prediction is displayed
|
// Test the first prediction is displayed
|
||||||
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
|
@ -624,7 +625,7 @@ public class InputLogicTests extends InputTestsBase {
|
||||||
|
|
||||||
for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
|
for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
|
||||||
type(WORD_TO_TYPE.substring(i, i+1));
|
type(WORD_TO_TYPE.substring(i, i+1));
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
}
|
}
|
||||||
assertEquals("type many trailing single quotes one by one", EXPECTED_RESULT,
|
assertEquals("type many trailing single quotes one by one", EXPECTED_RESULT,
|
||||||
|
@ -636,7 +637,7 @@ public class InputLogicTests extends InputTestsBase {
|
||||||
final String EXPECTED_RESULT = WORD_TO_TYPE;
|
final String EXPECTED_RESULT = WORD_TO_TYPE;
|
||||||
for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
|
for (int i = 0; i < WORD_TO_TYPE.length(); ++i) {
|
||||||
type(WORD_TO_TYPE.substring(i, i+1));
|
type(WORD_TO_TYPE.substring(i, i+1));
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
}
|
}
|
||||||
assertEquals("type words letter by letter", EXPECTED_RESULT,
|
assertEquals("type words letter by letter", EXPECTED_RESULT,
|
||||||
|
@ -652,10 +653,30 @@ public class InputLogicTests extends InputTestsBase {
|
||||||
changeLanguage("fr");
|
changeLanguage("fr");
|
||||||
runMessages();
|
runMessages();
|
||||||
type(WORD_TO_TYPE_SECOND_PART);
|
type(WORD_TO_TYPE_SECOND_PART);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
assertEquals("Suggestions updated after switching languages",
|
assertEquals("Suggestions updated after switching languages",
|
||||||
EXPECTED_RESULT, suggestedWords.size() > 0 ? suggestedWords.getWord(1) : null);
|
EXPECTED_RESULT, suggestedWords.size() > 0 ? suggestedWords.getWord(1) : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testBasicGesture() {
|
||||||
|
gesture("this");
|
||||||
|
assertEquals("gesture \"this\"", "this", mEditText.getText().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGestureGesture() {
|
||||||
|
gesture("this");
|
||||||
|
gesture("is");
|
||||||
|
assertEquals("gesture \"this is\"", "this is", mEditText.getText().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGestureBackspaceGestureAgain() {
|
||||||
|
gesture("this");
|
||||||
|
type(Constants.CODE_DELETE);
|
||||||
|
assertEquals("gesture then backspace", "", mEditText.getText().toString());
|
||||||
|
gesture("this");
|
||||||
|
MoreAsserts.assertNotEqual("gesture twice the same thing", "this",
|
||||||
|
mEditText.getText().toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ public class InputLogicTestsLanguageWithoutSpaces extends InputTestsBase {
|
||||||
mInputConnection.setSelection(CURSOR_POS, CURSOR_POS);
|
mInputConnection.setSelection(CURSOR_POS, CURSOR_POS);
|
||||||
mLatinIME.onUpdateSelection(typedLength, typedLength,
|
mLatinIME.onUpdateSelection(typedLength, typedLength,
|
||||||
CURSOR_POS, CURSOR_POS, -1, -1);
|
CURSOR_POS, CURSOR_POS, -1, -1);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
assertEquals("start composing inside text", -1,
|
assertEquals("start composing inside text", -1,
|
||||||
BaseInputConnection.getComposingSpanStart(mEditText.getText()));
|
BaseInputConnection.getComposingSpanStart(mEditText.getText()));
|
||||||
|
@ -91,7 +91,7 @@ public class InputLogicTestsLanguageWithoutSpaces extends InputTestsBase {
|
||||||
final String WORD_TO_TYPE = "Barack ";
|
final String WORD_TO_TYPE = "Barack ";
|
||||||
changeKeyboardLocaleAndDictLocale("th", "en_US");
|
changeKeyboardLocaleAndDictLocale("th", "en_US");
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
// Make sure there is no space
|
// Make sure there is no space
|
||||||
assertEquals("predictions in lang without spaces", "Barack",
|
assertEquals("predictions in lang without spaces", "Barack",
|
||||||
|
|
|
@ -70,7 +70,7 @@ public class InputLogicTestsNonEnglish extends InputTestsBase {
|
||||||
try {
|
try {
|
||||||
changeLanguage("fr");
|
changeLanguage("fr");
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
assertTrue("type word then type space should display punctuation strip",
|
assertTrue("type word then type space should display punctuation strip",
|
||||||
mLatinIME.getSuggestedWordsForTest().isPunctuationSuggestions());
|
mLatinIME.getSuggestedWordsForTest().isPunctuationSuggestions());
|
||||||
|
@ -95,7 +95,7 @@ public class InputLogicTestsNonEnglish extends InputTestsBase {
|
||||||
try {
|
try {
|
||||||
changeLanguage("fr");
|
changeLanguage("fr");
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
final SuggestedWords suggestedWords = mLatinIME.getSuggestedWordsForTest();
|
||||||
assertEquals("type word then type space yields predictions for French",
|
assertEquals("type word then type space yields predictions for French",
|
||||||
|
|
|
@ -18,6 +18,7 @@ package com.android.inputmethod.latin;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.graphics.Point;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.test.ServiceTestCase;
|
import android.test.ServiceTestCase;
|
||||||
|
@ -45,6 +46,7 @@ import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
|
||||||
import com.android.inputmethod.latin.settings.DebugSettings;
|
import com.android.inputmethod.latin.settings.DebugSettings;
|
||||||
import com.android.inputmethod.latin.settings.Settings;
|
import com.android.inputmethod.latin.settings.Settings;
|
||||||
import com.android.inputmethod.latin.utils.LocaleUtils;
|
import com.android.inputmethod.latin.utils.LocaleUtils;
|
||||||
|
import com.android.inputmethod.latin.utils.StringUtils;
|
||||||
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
|
||||||
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -58,9 +60,11 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
|
||||||
private static final String DEFAULT_AUTO_CORRECTION_THRESHOLD = "1";
|
private static final String DEFAULT_AUTO_CORRECTION_THRESHOLD = "1";
|
||||||
|
|
||||||
// The message that sets the underline is posted with a 500 ms delay
|
// The message that sets the underline is posted with a 500 ms delay
|
||||||
protected static final int DELAY_TO_WAIT_FOR_UNDERLINE = 500;
|
protected static final int DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS = 500;
|
||||||
// The message that sets predictions is posted with a 200 ms delay
|
// The message that sets predictions is posted with a 200 ms delay
|
||||||
protected static final int DELAY_TO_WAIT_FOR_PREDICTIONS = 200;
|
protected static final int DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS = 200;
|
||||||
|
// We wait for gesture computation for this delay
|
||||||
|
protected static final int DELAY_TO_WAIT_FOR_GESTURE_MILLIS = 200;
|
||||||
private final int TIMEOUT_TO_WAIT_FOR_LOADING_MAIN_DICTIONARY_IN_SECONDS = 60;
|
private final int TIMEOUT_TO_WAIT_FOR_LOADING_MAIN_DICTIONARY_IN_SECONDS = 60;
|
||||||
|
|
||||||
// Type for a test phony dictionary
|
// Type for a test phony dictionary
|
||||||
|
@ -217,7 +221,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
|
||||||
// Run messages to avoid the messages enqueued by startInputView() and its friends
|
// Run messages to avoid the messages enqueued by startInputView() and its friends
|
||||||
// to run on a later call and ruin things. We need to wait first because some of them
|
// to run on a later call and ruin things. We need to wait first because some of them
|
||||||
// can be posted with a delay (notably, MSG_RESUME_SUGGESTIONS)
|
// can be posted with a delay (notably, MSG_RESUME_SUGGESTIONS)
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,6 +305,47 @@ public class InputTestsBase extends ServiceTestCase<LatinIMEForTests> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected Point getXY(final int codePoint) {
|
||||||
|
final Key key = mKeyboard.getKey(codePoint);
|
||||||
|
if (key == null) {
|
||||||
|
throw new RuntimeException("Code point not on the keyboard");
|
||||||
|
} else {
|
||||||
|
return new Point(key.getX() + key.getWidth() / 2, key.getY() + key.getHeight() / 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void gesture(final String stringToGesture) {
|
||||||
|
if (StringUtils.codePointCount(stringToGesture) < 2) {
|
||||||
|
throw new RuntimeException("Can't gesture strings less than 2 chars long");
|
||||||
|
}
|
||||||
|
|
||||||
|
mLatinIME.onStartBatchInput();
|
||||||
|
final int startCodePoint = stringToGesture.codePointAt(0);
|
||||||
|
Point oldPoint = getXY(startCodePoint);
|
||||||
|
int timestamp = 0; // In milliseconds since the start of the gesture
|
||||||
|
final InputPointers pointers = new InputPointers(Constants.DEFAULT_GESTURE_POINTS_CAPACITY);
|
||||||
|
pointers.addPointer(oldPoint.x, oldPoint.y, 0 /* pointerId */, timestamp);
|
||||||
|
|
||||||
|
for (int i = Character.charCount(startCodePoint); i < stringToGesture.length();
|
||||||
|
i = stringToGesture.offsetByCodePoints(i, 1)) {
|
||||||
|
final Point newPoint = getXY(stringToGesture.codePointAt(i));
|
||||||
|
// Arbitrarily 0.5s between letters and 0.1 between events. Refine this later if needed.
|
||||||
|
final int STEPS = 5;
|
||||||
|
for (int j = 0; j < STEPS; ++j) {
|
||||||
|
timestamp += 100;
|
||||||
|
pointers.addPointer(oldPoint.x + ((newPoint.x - oldPoint.x) * j) / STEPS,
|
||||||
|
oldPoint.y + ((newPoint.y - oldPoint.y) * j) / STEPS,
|
||||||
|
0 /* pointerId */, timestamp);
|
||||||
|
}
|
||||||
|
oldPoint.x = newPoint.x;
|
||||||
|
oldPoint.y = newPoint.y;
|
||||||
|
mLatinIME.onUpdateBatchInput(pointers);
|
||||||
|
}
|
||||||
|
mLatinIME.onEndBatchInput(pointers);
|
||||||
|
sleep(DELAY_TO_WAIT_FOR_GESTURE_MILLIS);
|
||||||
|
runMessages();
|
||||||
|
}
|
||||||
|
|
||||||
protected void waitForDictionariesToBeLoaded() {
|
protected void waitForDictionariesToBeLoaded() {
|
||||||
try {
|
try {
|
||||||
mLatinIME.waitForLoadingDictionaries(
|
mLatinIME.waitForLoadingDictionaries(
|
||||||
|
|
|
@ -38,7 +38,7 @@ public class PunctuationTests extends InputTestsBase {
|
||||||
try {
|
try {
|
||||||
mLatinIME.loadSettings();
|
mLatinIME.loadSettings();
|
||||||
type(WORD_TO_TYPE);
|
type(WORD_TO_TYPE);
|
||||||
sleep(DELAY_TO_WAIT_FOR_UNDERLINE);
|
sleep(DELAY_TO_WAIT_FOR_UNDERLINE_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
assertTrue("type word then type space should display punctuation strip",
|
assertTrue("type word then type space should display punctuation strip",
|
||||||
mLatinIME.getSuggestedWordsForTest().isPunctuationSuggestions());
|
mLatinIME.getSuggestedWordsForTest().isPunctuationSuggestions());
|
||||||
|
|
|
@ -75,7 +75,7 @@ public class ShiftModeTests extends InputTestsBase {
|
||||||
repeatKey(Constants.CODE_DELETE);
|
repeatKey(Constants.CODE_DELETE);
|
||||||
}
|
}
|
||||||
assertFalse("Caps immediately after repeating Backspace a lot", isCapsModeAutoShifted());
|
assertFalse("Caps immediately after repeating Backspace a lot", isCapsModeAutoShifted());
|
||||||
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS);
|
sleep(DELAY_TO_WAIT_FOR_PREDICTIONS_MILLIS);
|
||||||
runMessages();
|
runMessages();
|
||||||
assertTrue("Caps after a while after repeating Backspace a lot", isCapsModeAutoShifted());
|
assertTrue("Caps after a while after repeating Backspace a lot", isCapsModeAutoShifted());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue