aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/org/kelar/inputmethod/latin/AppWorkaroundsTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/org/kelar/inputmethod/latin/AppWorkaroundsTests.java')
-rw-r--r--tests/src/org/kelar/inputmethod/latin/AppWorkaroundsTests.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/src/org/kelar/inputmethod/latin/AppWorkaroundsTests.java b/tests/src/org/kelar/inputmethod/latin/AppWorkaroundsTests.java
new file mode 100644
index 000000000..038b38735
--- /dev/null
+++ b/tests/src/org/kelar/inputmethod/latin/AppWorkaroundsTests.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2013 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 org.kelar.inputmethod.latin;
+
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Build.VERSION_CODES;
+import android.view.inputmethod.EditorInfo;
+
+import androidx.test.filters.LargeTest;
+
+import org.kelar.inputmethod.latin.settings.Settings;
+
+@LargeTest
+public class AppWorkaroundsTests extends InputTestsBase {
+ String packageNameOfAppBeforeJellyBean;
+ String packageNameOfAppAfterJellyBean;
+
+ @Override
+ protected void setUp() throws Exception {
+ // NOTE: this will fail if there is no app installed that targets an SDK
+ // before Jelly Bean. For the moment, it's fine.
+ final PackageManager pm = getContext().getPackageManager();
+ for (ApplicationInfo ai : pm.getInstalledApplications(0 /* flags */)) {
+ if (ai.targetSdkVersion < VERSION_CODES.JELLY_BEAN) {
+ packageNameOfAppBeforeJellyBean = ai.packageName;
+ } else {
+ packageNameOfAppAfterJellyBean = ai.packageName;
+ }
+ }
+ super.setUp();
+ }
+
+ // We want to test if the app package info is correctly retrieved by LatinIME. Since it
+ // asks this information to the package manager from the package name, and that it takes
+ // the package name from the EditorInfo, all we have to do it put the correct package
+ // name in the editor info.
+ // To this end, our base class InputTestsBase offers a hook for us to touch the EditorInfo.
+ // We override this hook to write the package name that we need.
+ @Override
+ protected EditorInfo enrichEditorInfo(final EditorInfo ei) {
+ if ("testBeforeJellyBeanTrue".equals(getName())) {
+ ei.packageName = packageNameOfAppBeforeJellyBean;
+ } else if ("testBeforeJellyBeanFalse".equals(getName())) {
+ ei.packageName = packageNameOfAppAfterJellyBean;
+ }
+ return ei;
+ }
+
+ public void testBeforeJellyBeanTrue() {
+ assertTrue("Couldn't successfully detect this app targets < Jelly Bean (package is "
+ + packageNameOfAppBeforeJellyBean + ")",
+ Settings.getInstance().getCurrent().isBeforeJellyBean());
+ }
+
+ public void testBeforeJellyBeanFalse() {
+ assertFalse("Couldn't successfully detect this app targets >= Jelly Bean (package is "
+ + packageNameOfAppAfterJellyBean + ")",
+ Settings.getInstance().getCurrent().isBeforeJellyBean());
+ }
+} \ No newline at end of file