aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/com/android/inputmethod/latin/InputTestsBase.java27
-rw-r--r--tests/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerServiceTest.java63
2 files changed, 88 insertions, 2 deletions
diff --git a/tests/src/com/android/inputmethod/latin/InputTestsBase.java b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
index ffd95f57a..fe58cb84e 100644
--- a/tests/src/com/android/inputmethod/latin/InputTestsBase.java
+++ b/tests/src/com/android/inputmethod/latin/InputTestsBase.java
@@ -41,6 +41,7 @@ import com.android.inputmethod.keyboard.Key;
import com.android.inputmethod.keyboard.Keyboard;
import java.util.HashMap;
+import java.util.Locale;
public class InputTestsBase extends ServiceTestCase<LatinIME> {
@@ -51,7 +52,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIME> {
protected LatinIME mLatinIME;
protected Keyboard mKeyboard;
- protected TextView mTextView;
+ protected MyTextView mTextView;
protected InputConnection mInputConnection;
private final HashMap<String, InputMethodSubtype> mSubtypeMap =
new HashMap<String, InputMethodSubtype>();
@@ -86,6 +87,27 @@ public class InputTestsBase extends ServiceTestCase<LatinIME> {
return (mSpan instanceof SuggestionSpan) &&
0 != (SuggestionSpan.FLAG_AUTO_CORRECTION & ((SuggestionSpan)mSpan).getFlags());
}
+ public String[] getSuggestions() {
+ return ((SuggestionSpan)mSpan).getSuggestions();
+ }
+ }
+
+ // A helper class to increase control over the TextView
+ public static class MyTextView extends TextView {
+ public Locale mCurrentLocale;
+ public MyTextView(final Context c) {
+ super(c);
+ }
+ public void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ }
+ public Locale getTextServicesLocale() {
+ // This method is necessary because TextView is asking this method for the language
+ // to check the spell in. If we don't override this, the spell checker will run in
+ // whatever language the keyboard is currently set on the test device, ignoring any
+ // settings we do inside the tests.
+ return mCurrentLocale;
+ }
}
public InputTestsBase() {
@@ -112,7 +134,7 @@ public class InputTestsBase extends ServiceTestCase<LatinIME> {
@Override
protected void setUp() throws Exception {
super.setUp();
- mTextView = new TextView(getContext());
+ mTextView = new MyTextView(getContext());
mTextView.setInputType(InputType.TYPE_CLASS_TEXT);
mTextView.setEnabled(true);
setupService();
@@ -248,6 +270,7 @@ 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");
}
diff --git a/tests/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerServiceTest.java b/tests/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerServiceTest.java
new file mode 100644
index 000000000..21406d370
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/spellcheck/AndroidSpellCheckerServiceTest.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2012 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 com.android.inputmethod.latin.spellcheck;
+
+import android.text.SpannableStringBuilder;
+import android.text.style.CharacterStyle;
+import android.text.style.SuggestionSpan;
+
+import com.android.inputmethod.latin.InputTestsBase;
+
+public class AndroidSpellCheckerServiceTest extends InputTestsBase {
+ public void testSpellchecker() {
+ mTextView.onAttachedToWindow();
+ mTextView.setText("tgis");
+ type(" ");
+ sleep(1000);
+ runMessages();
+ sleep(1000);
+
+ final SpanGetter span = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
+ // If no span, the following will crash
+ final String[] suggestions = span.getSuggestions();
+ // For this test we consider "tgis" should yield at least 2 suggestions (at this moment
+ // it yields 5).
+ assertTrue(suggestions.length >= 2);
+ // We also assume the top suggestion should be "this".
+ assertEquals("", "this", suggestions[0]);
+ }
+
+ public void testRussianSpellchecker() {
+ changeLanguage("ru");
+ mTextView.onAttachedToWindow();
+ mTextView.setText("годп");
+ type(" ");
+ sleep(1000);
+ runMessages();
+ sleep(1000);
+
+ final SpanGetter span = new SpanGetter(mTextView.getText(), SuggestionSpan.class);
+ // If no span, the following will crash
+ final String[] suggestions = span.getSuggestions();
+ // For this test we consider "годп" should yield at least 2 suggestions (at this moment
+ // it yields 5).
+ assertTrue(suggestions.length >= 2);
+ // We also assume the top suggestion should be "года", which is the top word in the
+ // Russian dictionary.
+ assertEquals("", "года", suggestions[0]);
+ }
+}