Loading services/tests/servicestests/src/com/android/server/inputmethod/InputMethodSubtypeSwitchingControllerTest.java +55 −38 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import android.content.ComponentName; import android.content.pm.ApplicationInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; Loading Loading @@ -99,17 +100,18 @@ public class InputMethodSubtypeSwitchingControllerTest { } } private static ImeSubtypeListItem createDummyItem(String imeName, String subtypeName, String subtypeLocale, int subtypeIndex, String systemLocale) { private static ImeSubtypeListItem createDummyItem(ComponentName imeComponentName, String imeName, String subtypeName, String subtypeLocale, int subtypeIndex, String systemLocale) { final ResolveInfo ri = new ResolveInfo(); final ServiceInfo si = new ServiceInfo(); final ApplicationInfo ai = new ApplicationInfo(); ai.packageName = DUMMY_PACKAGE_NAME; ai.packageName = imeComponentName.getPackageName(); ai.enabled = true; si.applicationInfo = ai; si.enabled = true; si.packageName = DUMMY_PACKAGE_NAME; si.name = imeName; si.packageName = imeComponentName.getPackageName(); si.name = imeComponentName.getClassName(); si.exported = true; si.nonLocalizedLabel = DUMMY_IME_LABEL; ri.serviceInfo = si; Loading Loading @@ -367,52 +369,56 @@ public class InputMethodSubtypeSwitchingControllerTest { @Test public void testImeSubtypeListComparator() throws Exception { final ComponentName imeX1 = new ComponentName("com.example.imeX", "Ime1"); final ComponentName imeX2 = new ComponentName("com.example.imeX", "Ime2"); final ComponentName imeY1 = new ComponentName("com.example.imeY", "Ime1"); final ComponentName imeZ1 = new ComponentName("com.example.imeZ", "Ime1"); { final List<ImeSubtypeListItem> items = Arrays.asList( // Subtypes of IME "X". // Subtypes that has the same locale of the system's. createDummyItem("X", "E", "en_US", 0, "en_US"), createDummyItem("X", "Z", "en_US", 3, "en_US"), createDummyItem("X", "", "en_US", 6, "en_US"), createDummyItem(imeX1, "X", "E", "en_US", 0, "en_US"), createDummyItem(imeX1, "X", "Z", "en_US", 3, "en_US"), createDummyItem(imeX1, "X", "", "en_US", 6, "en_US"), // Subtypes that has the same language of the system's. createDummyItem("X", "E", "en", 1, "en_US"), createDummyItem("X", "Z", "en", 4, "en_US"), createDummyItem("X", "", "en", 7, "en_US"), createDummyItem(imeX1, "X", "E", "en", 1, "en_US"), createDummyItem(imeX1, "X", "Z", "en", 4, "en_US"), createDummyItem(imeX1, "X", "", "en", 7, "en_US"), // Subtypes that has different language than the system's. createDummyItem("X", "A", "hi_IN", 27, "en_US"), createDummyItem("X", "E", "ja", 2, "en_US"), createDummyItem("X", "Z", "ja", 5, "en_US"), createDummyItem("X", "", "ja", 8, "en_US"), createDummyItem(imeX1, "X", "A", "hi_IN", 27, "en_US"), createDummyItem(imeX1, "X", "E", "ja", 2, "en_US"), createDummyItem(imeX1, "X", "Z", "ja", 5, "en_US"), createDummyItem(imeX1, "X", "", "ja", 8, "en_US"), // Subtypes of IME "Y". // Subtypes that has the same locale of the system's. createDummyItem("Y", "E", "en_US", 9, "en_US"), createDummyItem("Y", "Z", "en_US", 12, "en_US"), createDummyItem("Y", "", "en_US", 15, "en_US"), createDummyItem(imeY1, "Y", "E", "en_US", 9, "en_US"), createDummyItem(imeY1, "Y", "Z", "en_US", 12, "en_US"), createDummyItem(imeY1, "Y", "", "en_US", 15, "en_US"), // Subtypes that has the same language of the system's. createDummyItem("Y", "E", "en", 10, "en_US"), createDummyItem("Y", "Z", "en", 13, "en_US"), createDummyItem("Y", "", "en", 16, "en_US"), createDummyItem(imeY1, "Y", "E", "en", 10, "en_US"), createDummyItem(imeY1, "Y", "Z", "en", 13, "en_US"), createDummyItem(imeY1, "Y", "", "en", 16, "en_US"), // Subtypes that has different language than the system's. createDummyItem("Y", "A", "hi_IN", 28, "en_US"), createDummyItem("Y", "E", "ja", 11, "en_US"), createDummyItem("Y", "Z", "ja", 14, "en_US"), createDummyItem("Y", "", "ja", 17, "en_US"), createDummyItem(imeY1, "Y", "A", "hi_IN", 28, "en_US"), createDummyItem(imeY1, "Y", "E", "ja", 11, "en_US"), createDummyItem(imeY1, "Y", "Z", "ja", 14, "en_US"), createDummyItem(imeY1, "Y", "", "ja", 17, "en_US"), // Subtypes of IME "". // Subtypes of IME Z. // Subtypes that has the same locale of the system's. createDummyItem("", "E", "en_US", 18, "en_US"), createDummyItem("", "Z", "en_US", 21, "en_US"), createDummyItem("", "", "en_US", 24, "en_US"), createDummyItem(imeZ1, "", "E", "en_US", 18, "en_US"), createDummyItem(imeZ1, "", "Z", "en_US", 21, "en_US"), createDummyItem(imeZ1, "", "", "en_US", 24, "en_US"), // Subtypes that has the same language of the system's. createDummyItem("", "E", "en", 19, "en_US"), createDummyItem("", "Z", "en", 22, "en_US"), createDummyItem("", "", "en", 25, "en_US"), createDummyItem(imeZ1, "", "E", "en", 19, "en_US"), createDummyItem(imeZ1, "", "Z", "en", 22, "en_US"), createDummyItem(imeZ1, "", "", "en", 25, "en_US"), // Subtypes that has different language than the system's. createDummyItem("", "A", "hi_IN", 29, "en_US"), createDummyItem("", "E", "ja", 20, "en_US"), createDummyItem("", "Z", "ja", 23, "en_US"), createDummyItem("", "", "ja", 26, "en_US")); createDummyItem(imeZ1, "", "A", "hi_IN", 29, "en_US"), createDummyItem(imeZ1, "", "E", "ja", 20, "en_US"), createDummyItem(imeZ1, "", "Z", "ja", 23, "en_US"), createDummyItem(imeZ1, "", "", "ja", 26, "en_US")); // Ensure {@link java.lang.Comparable#compareTo} contracts are satisfied. for (int i = 0; i < items.size(); ++i) { Loading @@ -432,14 +438,25 @@ public class InputMethodSubtypeSwitchingControllerTest { { // Following two items have the same priority. final ImeSubtypeListItem nonSystemLocale1 = createDummyItem("X", "A", "ja_JP", 0, "en_US"); createDummyItem(imeX1, "X", "A", "ja_JP", 0, "en_US"); final ImeSubtypeListItem nonSystemLocale2 = createDummyItem("X", "A", "hi_IN", 1, "en_US"); createDummyItem(imeX1, "X", "A", "hi_IN", 1, "en_US"); assertTrue(nonSystemLocale1.compareTo(nonSystemLocale2) == 0); assertTrue(nonSystemLocale2.compareTo(nonSystemLocale1) == 0); // But those aren't equal to each other. assertFalse(nonSystemLocale1.equals(nonSystemLocale2)); assertFalse(nonSystemLocale2.equals(nonSystemLocale1)); } { // Currently ComponentName is not used for sorting. final ImeSubtypeListItem ime1 = createDummyItem(imeX1, "X", "A", "ja_JP", 0, "en_US"); final ImeSubtypeListItem ime2 = createDummyItem(imeX2, "X", "A", "ja_JP", 0, "en_US"); assertTrue(ime1.compareTo(ime2) == 0); assertTrue(ime2.compareTo(ime1) == 0); // But those aren't equal to each other. assertFalse(ime1.equals(ime2)); assertFalse(ime2.equals(ime1)); } } } Loading
services/tests/servicestests/src/com/android/server/inputmethod/InputMethodSubtypeSwitchingControllerTest.java +55 −38 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import android.content.ComponentName; import android.content.pm.ApplicationInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; Loading Loading @@ -99,17 +100,18 @@ public class InputMethodSubtypeSwitchingControllerTest { } } private static ImeSubtypeListItem createDummyItem(String imeName, String subtypeName, String subtypeLocale, int subtypeIndex, String systemLocale) { private static ImeSubtypeListItem createDummyItem(ComponentName imeComponentName, String imeName, String subtypeName, String subtypeLocale, int subtypeIndex, String systemLocale) { final ResolveInfo ri = new ResolveInfo(); final ServiceInfo si = new ServiceInfo(); final ApplicationInfo ai = new ApplicationInfo(); ai.packageName = DUMMY_PACKAGE_NAME; ai.packageName = imeComponentName.getPackageName(); ai.enabled = true; si.applicationInfo = ai; si.enabled = true; si.packageName = DUMMY_PACKAGE_NAME; si.name = imeName; si.packageName = imeComponentName.getPackageName(); si.name = imeComponentName.getClassName(); si.exported = true; si.nonLocalizedLabel = DUMMY_IME_LABEL; ri.serviceInfo = si; Loading Loading @@ -367,52 +369,56 @@ public class InputMethodSubtypeSwitchingControllerTest { @Test public void testImeSubtypeListComparator() throws Exception { final ComponentName imeX1 = new ComponentName("com.example.imeX", "Ime1"); final ComponentName imeX2 = new ComponentName("com.example.imeX", "Ime2"); final ComponentName imeY1 = new ComponentName("com.example.imeY", "Ime1"); final ComponentName imeZ1 = new ComponentName("com.example.imeZ", "Ime1"); { final List<ImeSubtypeListItem> items = Arrays.asList( // Subtypes of IME "X". // Subtypes that has the same locale of the system's. createDummyItem("X", "E", "en_US", 0, "en_US"), createDummyItem("X", "Z", "en_US", 3, "en_US"), createDummyItem("X", "", "en_US", 6, "en_US"), createDummyItem(imeX1, "X", "E", "en_US", 0, "en_US"), createDummyItem(imeX1, "X", "Z", "en_US", 3, "en_US"), createDummyItem(imeX1, "X", "", "en_US", 6, "en_US"), // Subtypes that has the same language of the system's. createDummyItem("X", "E", "en", 1, "en_US"), createDummyItem("X", "Z", "en", 4, "en_US"), createDummyItem("X", "", "en", 7, "en_US"), createDummyItem(imeX1, "X", "E", "en", 1, "en_US"), createDummyItem(imeX1, "X", "Z", "en", 4, "en_US"), createDummyItem(imeX1, "X", "", "en", 7, "en_US"), // Subtypes that has different language than the system's. createDummyItem("X", "A", "hi_IN", 27, "en_US"), createDummyItem("X", "E", "ja", 2, "en_US"), createDummyItem("X", "Z", "ja", 5, "en_US"), createDummyItem("X", "", "ja", 8, "en_US"), createDummyItem(imeX1, "X", "A", "hi_IN", 27, "en_US"), createDummyItem(imeX1, "X", "E", "ja", 2, "en_US"), createDummyItem(imeX1, "X", "Z", "ja", 5, "en_US"), createDummyItem(imeX1, "X", "", "ja", 8, "en_US"), // Subtypes of IME "Y". // Subtypes that has the same locale of the system's. createDummyItem("Y", "E", "en_US", 9, "en_US"), createDummyItem("Y", "Z", "en_US", 12, "en_US"), createDummyItem("Y", "", "en_US", 15, "en_US"), createDummyItem(imeY1, "Y", "E", "en_US", 9, "en_US"), createDummyItem(imeY1, "Y", "Z", "en_US", 12, "en_US"), createDummyItem(imeY1, "Y", "", "en_US", 15, "en_US"), // Subtypes that has the same language of the system's. createDummyItem("Y", "E", "en", 10, "en_US"), createDummyItem("Y", "Z", "en", 13, "en_US"), createDummyItem("Y", "", "en", 16, "en_US"), createDummyItem(imeY1, "Y", "E", "en", 10, "en_US"), createDummyItem(imeY1, "Y", "Z", "en", 13, "en_US"), createDummyItem(imeY1, "Y", "", "en", 16, "en_US"), // Subtypes that has different language than the system's. createDummyItem("Y", "A", "hi_IN", 28, "en_US"), createDummyItem("Y", "E", "ja", 11, "en_US"), createDummyItem("Y", "Z", "ja", 14, "en_US"), createDummyItem("Y", "", "ja", 17, "en_US"), createDummyItem(imeY1, "Y", "A", "hi_IN", 28, "en_US"), createDummyItem(imeY1, "Y", "E", "ja", 11, "en_US"), createDummyItem(imeY1, "Y", "Z", "ja", 14, "en_US"), createDummyItem(imeY1, "Y", "", "ja", 17, "en_US"), // Subtypes of IME "". // Subtypes of IME Z. // Subtypes that has the same locale of the system's. createDummyItem("", "E", "en_US", 18, "en_US"), createDummyItem("", "Z", "en_US", 21, "en_US"), createDummyItem("", "", "en_US", 24, "en_US"), createDummyItem(imeZ1, "", "E", "en_US", 18, "en_US"), createDummyItem(imeZ1, "", "Z", "en_US", 21, "en_US"), createDummyItem(imeZ1, "", "", "en_US", 24, "en_US"), // Subtypes that has the same language of the system's. createDummyItem("", "E", "en", 19, "en_US"), createDummyItem("", "Z", "en", 22, "en_US"), createDummyItem("", "", "en", 25, "en_US"), createDummyItem(imeZ1, "", "E", "en", 19, "en_US"), createDummyItem(imeZ1, "", "Z", "en", 22, "en_US"), createDummyItem(imeZ1, "", "", "en", 25, "en_US"), // Subtypes that has different language than the system's. createDummyItem("", "A", "hi_IN", 29, "en_US"), createDummyItem("", "E", "ja", 20, "en_US"), createDummyItem("", "Z", "ja", 23, "en_US"), createDummyItem("", "", "ja", 26, "en_US")); createDummyItem(imeZ1, "", "A", "hi_IN", 29, "en_US"), createDummyItem(imeZ1, "", "E", "ja", 20, "en_US"), createDummyItem(imeZ1, "", "Z", "ja", 23, "en_US"), createDummyItem(imeZ1, "", "", "ja", 26, "en_US")); // Ensure {@link java.lang.Comparable#compareTo} contracts are satisfied. for (int i = 0; i < items.size(); ++i) { Loading @@ -432,14 +438,25 @@ public class InputMethodSubtypeSwitchingControllerTest { { // Following two items have the same priority. final ImeSubtypeListItem nonSystemLocale1 = createDummyItem("X", "A", "ja_JP", 0, "en_US"); createDummyItem(imeX1, "X", "A", "ja_JP", 0, "en_US"); final ImeSubtypeListItem nonSystemLocale2 = createDummyItem("X", "A", "hi_IN", 1, "en_US"); createDummyItem(imeX1, "X", "A", "hi_IN", 1, "en_US"); assertTrue(nonSystemLocale1.compareTo(nonSystemLocale2) == 0); assertTrue(nonSystemLocale2.compareTo(nonSystemLocale1) == 0); // But those aren't equal to each other. assertFalse(nonSystemLocale1.equals(nonSystemLocale2)); assertFalse(nonSystemLocale2.equals(nonSystemLocale1)); } { // Currently ComponentName is not used for sorting. final ImeSubtypeListItem ime1 = createDummyItem(imeX1, "X", "A", "ja_JP", 0, "en_US"); final ImeSubtypeListItem ime2 = createDummyItem(imeX2, "X", "A", "ja_JP", 0, "en_US"); assertTrue(ime1.compareTo(ime2) == 0); assertTrue(ime2.compareTo(ime1) == 0); // But those aren't equal to each other. assertFalse(ime1.equals(ime2)); assertFalse(ime2.equals(ime1)); } } }