summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYohei Yukawa <yukawa@google.com>2014-09-11 16:59:31 +0900
committerYohei Yukawa <yukawa@google.com>2014-09-11 23:44:43 +0900
commitbca817b2e2623c49bbb618f78fe207bedf57f266 (patch)
treea0aad3d1a8df48756d3ea37dd93a8a8fefaf0e7a
parent0ecb0c4397445984a5c5db4c31f1210fb9b594a1 (diff)
downloadframeworks_base-bca817b2e2623c49bbb618f78fe207bedf57f266.zip
frameworks_base-bca817b2e2623c49bbb618f78fe207bedf57f266.tar.gz
frameworks_base-bca817b2e2623c49bbb618f78fe207bedf57f266.tar.bz2
Enrich test cases when enabling default IMEs part 2
This is another groundwork for subsequent fixes. Notable changes in test cases are: - isSystemReady == false is now coverted. - tests can run even when the system locale of test environment is different from "en_US" BUG: 17347871 Change-Id: I9434270735d3b37d8b788d41250b23d7950aaeed
-rw-r--r--core/tests/inputmethodtests/src/android/os/InputMethodTest.java88
1 files changed, 58 insertions, 30 deletions
diff --git a/core/tests/inputmethodtests/src/android/os/InputMethodTest.java b/core/tests/inputmethodtests/src/android/os/InputMethodTest.java
index f9dea4e..bd3d6da 100644
--- a/core/tests/inputmethodtests/src/android/os/InputMethodTest.java
+++ b/core/tests/inputmethodtests/src/android/os/InputMethodTest.java
@@ -16,8 +16,6 @@
package android.os;
-import com.android.internal.inputmethod.InputMethodUtils;
-
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ResolveInfo;
@@ -28,15 +26,22 @@ import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodSubtype;
import android.view.inputmethod.InputMethodSubtype.InputMethodSubtypeBuilder;
+import com.android.internal.inputmethod.InputMethodUtils;
+
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.List;
+import java.util.Locale;
public class InputMethodTest extends InstrumentationTestCase {
private static final boolean IS_AUX = true;
private static final boolean IS_DEFAULT = true;
private static final boolean IS_AUTO = true;
private static final boolean IS_ASCII_CAPABLE = true;
+ private static final boolean IS_SYSTEM_READY = true;
private static final ArrayList<InputMethodSubtype> NO_SUBTYPE = null;
+ private static final Locale LOCALE_EN_US = new Locale("en", "US");
@SmallTest
public void testDefaultEnabledImesWithDefaultVoiceIme() throws Exception {
@@ -49,19 +54,19 @@ public class InputMethodTest extends InstrumentationTestCase {
imis.add(createDefaultDummyLatinKeyboardIme());
imis.add(createNonDefaultDummyJaJPKeyboardIme());
imis.add(createNonDefaultDummyJaJPKeyboardImeWithoutSubtypes());
- final ArrayList<InputMethodInfo> enabledImis = InputMethodUtils.getDefaultEnabledImes(
- context, true, imis);
- assertEquals(2, enabledImis.size());
- for (int i = 0; i < enabledImis.size(); ++i) {
- final InputMethodInfo imi = enabledImis.get(0);
- // "DummyDefaultAutoVoiceIme" and "DummyDefaultEnKeyboardIme"
- if (imi.getPackageName().equals("DummyDefaultAutoVoiceIme")
- || imi.getPackageName().equals("DummyDefaultEnKeyboardIme")) {
- continue;
- } else {
- fail("Invalid enabled subtype.");
- }
- }
+
+ final ArrayList<InputMethodInfo> enabledImisForSystemNotReady =
+ callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis,
+ LOCALE_EN_US);
+ assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme",
+ "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1"),
+ getPackageNames(enabledImisForSystemNotReady));
+
+ final ArrayList<InputMethodInfo> enabledImisForSystemReady =
+ callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis,
+ LOCALE_EN_US);
+ assertEquals(toSet("DummyDefaultAutoVoiceIme", "DummyDefaultEnKeyboardIme"),
+ getPackageNames(enabledImisForSystemReady));
}
@SmallTest
@@ -74,21 +79,18 @@ public class InputMethodTest extends InstrumentationTestCase {
imis.add(createDefaultDummyLatinKeyboardIme());
imis.add(createNonDefaultDummyJaJPKeyboardIme());
imis.add(createNonDefaultDummyJaJPKeyboardImeWithoutSubtypes());
- final ArrayList<InputMethodInfo> enabledImis = InputMethodUtils.getDefaultEnabledImes(
- context, true, imis);
- assertEquals(3, enabledImis.size());
- for (int i = 0; i < enabledImis.size(); ++i) {
- final InputMethodInfo imi = enabledImis.get(0);
- // "DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1" and
- // "DummyDefaultEnKeyboardIme"
- if (imi.getPackageName().equals("DummyNonDefaultAutoVoiceIme0")
- || imi.getPackageName().equals("DummyNonDefaultAutoVoiceIme1")
- || imi.getPackageName().equals("DummyDefaultEnKeyboardIme")) {
- continue;
- } else {
- fail("Invalid enabled subtype.");
- }
- }
+
+ final ArrayList<InputMethodInfo> enabledImisForSystemNotReady =
+ callGetDefaultEnabledImesUnderWithLocale(context, !IS_SYSTEM_READY, imis,
+ LOCALE_EN_US);
+ assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1",
+ "DummyDefaultEnKeyboardIme"), getPackageNames(enabledImisForSystemNotReady));
+
+ final ArrayList<InputMethodInfo> enabledImisForSystemReady =
+ callGetDefaultEnabledImesUnderWithLocale(context, IS_SYSTEM_READY, imis,
+ LOCALE_EN_US);
+ assertEquals(toSet("DummyNonDefaultAutoVoiceIme0", "DummyNonDefaultAutoVoiceIme1",
+ "DummyDefaultEnKeyboardIme"), getPackageNames(enabledImisForSystemReady));
}
@SmallTest
@@ -129,6 +131,32 @@ public class InputMethodTest extends InstrumentationTestCase {
}
}
+ private static ArrayList<InputMethodInfo> callGetDefaultEnabledImesUnderWithLocale(
+ final Context context, final boolean isSystemReady,
+ final ArrayList<InputMethodInfo> imis, final Locale locale) {
+ final Locale initialLocale = context.getResources().getConfiguration().locale;
+ try {
+ context.getResources().getConfiguration().setLocale(locale);
+ return InputMethodUtils.getDefaultEnabledImes(context, isSystemReady, imis);
+ } finally {
+ context.getResources().getConfiguration().setLocale(initialLocale);
+ }
+ }
+
+ @SafeVarargs
+ private static <T> HashSet<T> toSet(final T... xs) {
+ return new HashSet<T>(Arrays.asList(xs));
+ }
+
+ private HashSet<String> getPackageNames(final ArrayList<InputMethodInfo> imis) {
+ final HashSet<String> packageNames = new HashSet<>();
+ for (final InputMethodInfo imi : imis) {
+ final String actualPackageName = imi.getPackageName();
+ packageNames.add(actualPackageName);
+ }
+ return packageNames;
+ }
+
private static void verifyEquality(InputMethodInfo expected, InputMethodInfo actual) {
assertEquals(expected, actual);
assertEquals(expected.getSubtypeCount(), actual.getSubtypeCount());