Fix international tests

Tests have been broken again by recent changes to subtype
choice within Latin IME. This fixes the problem and all tests
pass again.

This change also includes a small fix to one test that was
checking for something irrelevant.

Change-Id: I6a03dea24f99b0d2ad84c4161a8413f3060bb811
main
Jean Chalard 2013-01-09 20:55:41 +09:00
parent 95e3008d25
commit 912ad4614f
3 changed files with 9 additions and 30 deletions

View File

@ -31,6 +31,7 @@ import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.InputMethodSubtype;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.keyboard.KeyboardSwitcher;
import java.util.List;
@ -239,7 +240,14 @@ public final class SubtypeSwitcher {
return mNeedsToDisplayLanguage.getValue();
}
private static Locale sForcedLocaleForTesting = null;
@UsedForTesting
void forceLocale(final Locale locale) {
sForcedLocaleForTesting = locale;
}
public Locale getCurrentSubtypeLocale() {
if (null != sForcedLocaleForTesting) return sForcedLocaleForTesting;
return SubtypeLocale.getSubtypeLocale(getCurrentSubtype());
}

View File

@ -117,7 +117,5 @@ public class BlueUnderlineTests extends InputTestsBase {
// Now simulate the user moving the cursor.
SpanGetter span = new SpanGetter(mTextView.getText(), UnderlineSpan.class);
assertNull("should not be composing, so should not have an underline span", span.mSpan);
span = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
assertNull("should not be composing, so should not have an underline span", span.mSpan);
}
}

View File

@ -55,8 +55,6 @@ public class InputTestsBase extends ServiceTestCase<LatinIME> {
protected MyTextView mTextView;
protected View mInputView;
protected InputConnection mInputConnection;
private final HashMap<String, InputMethodSubtype> mSubtypeMap =
new HashMap<String, InputMethodSubtype>();
// A helper class to ease span tests
public static class SpanGetter {
@ -143,7 +141,6 @@ public class InputTestsBase extends ServiceTestCase<LatinIME> {
final boolean previousDebugSetting = setDebugMode(true);
mLatinIME.onCreate();
setDebugMode(previousDebugSetting);
initSubtypeMap();
final EditorInfo ei = new EditorInfo();
ei.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT;
final InputConnection ic = mTextView.onCreateInputConnection(ei);
@ -161,26 +158,6 @@ public class InputTestsBase extends ServiceTestCase<LatinIME> {
changeLanguage("en_US");
}
private void initSubtypeMap() {
final InputMethodManager imm = (InputMethodManager)mLatinIME.getSystemService(
Context.INPUT_METHOD_SERVICE);
final String packageName = mLatinIME.getPackageName();
// The IMEs and subtypes don't need to be enabled to run this test because IMF isn't
// involved here.
for (final InputMethodInfo imi : imm.getInputMethodList()) {
if (imi.getPackageName().equals(packageName)) {
final int subtypeCount = imi.getSubtypeCount();
for (int i = 0; i < subtypeCount; i++) {
final InputMethodSubtype ims = imi.getSubtypeAt(i);
final String locale = ims.getLocale();
mSubtypeMap.put(locale, ims);
}
return;
}
}
fail("LatinIME is not found");
}
// We need to run the messages added to the handler from LatinIME. The only way to do
// that is to call Looper#loop() on the right looper, so we're going to get the looper
// object and call #loop() here. The messages in the handler actually run on the UI
@ -270,12 +247,8 @@ public class InputTestsBase extends ServiceTestCase<LatinIME> {
}
protected void changeLanguage(final String locale) {
final InputMethodSubtype subtype = mSubtypeMap.get(locale);
mTextView.mCurrentLocale = LocaleUtils.constructLocaleFromString(locale);
if (subtype == null) {
fail("InputMethodSubtype for locale " + locale + " is not enabled");
}
SubtypeSwitcher.getInstance().onSubtypeChanged(subtype);
SubtypeSwitcher.getInstance().forceLocale(mTextView.mCurrentLocale);
mLatinIME.loadKeyboard();
mKeyboard = mLatinIME.mKeyboardSwitcher.getKeyboard();
waitForDictionaryToBeLoaded();