Loading java/src/com/android/inputmethod/compat/AbstractCompatWrapper.java +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ public abstract class AbstractCompatWrapper { public AbstractCompatWrapper(Object obj) { if (obj == null) { Log.e(TAG, "Invalid input to AbstructCompatWrapper"); Log.e(TAG, "Invalid input to AbstractCompatWrapper"); } mObj = obj; } Loading java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java +3 −3 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ import java.util.Locale; // TODO: Override this class with the concrete implementation if we need to take care of the // performance. public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper { public class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper { private static final boolean DBG = LatinImeLogger.sDBG; private static final String TAG = InputMethodSubtypeCompatWrapper.class.getSimpleName(); private static final String DEFAULT_LOCALE = "en_US"; Loading Loading @@ -65,7 +65,7 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper public InputMethodSubtypeCompatWrapper(Object subtype) { super((CLASS_InputMethodSubtype != null && CLASS_InputMethodSubtype.isInstance(subtype)) ? subtype : null); ? subtype : new Object()); mDummyNameResId = 0; mDummyIconResId = 0; mDummyLocale = DEFAULT_LOCALE; Loading @@ -76,7 +76,7 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper // Constructor for creating a dummy subtype. public InputMethodSubtypeCompatWrapper(int nameResId, int iconResId, String locale, String mode, String extraValues) { super(null); super(new Object()); if (DBG) { Log.d(TAG, "CreateInputMethodSubtypeCompatWrapper"); } Loading tests/src/com/android/inputmethod/latin/ArbitrarySubtype.java 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * 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; import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper; public class ArbitrarySubtype extends InputMethodSubtypeCompatWrapper { final String mLocale; final String mExtraValue; public ArbitrarySubtype(final String locale, final String extraValue) { super(locale); mLocale = locale; mExtraValue = extraValue; } public String getLocale() { return mLocale; } public String getExtraValue() { return mExtraValue; } public String getMode() { return "keyboard"; } public String getExtraValueOf(final String key) { if (LatinIME.SUBTYPE_EXTRA_VALUE_ASCII_CAPABLE.equals(key)) { return ""; } else { return null; } } public boolean containsExtraValueKey(final String key) { return LatinIME.SUBTYPE_EXTRA_VALUE_ASCII_CAPABLE.equals(key); } } tests/src/com/android/inputmethod/latin/InputLogicTests.java +61 −14 Original line number Diff line number Diff line Loading @@ -95,20 +95,7 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> { mLatinIME.onStartInputView(ei, false); mLatinIME.onCreateInputMethodInterface().startInput(ic, ei); mInputConnection = ic; // Wait for the main dictionary to be loaded (we need it for auto-correction tests) int remainingAttempts = 10; while (remainingAttempts > 0 && !mLatinIME.mSuggest.hasMainDictionary()) { try { Thread.sleep(100); } catch (InterruptedException e) { // Don't do much } finally { --remainingAttempts; } } if (!mLatinIME.mSuggest.hasMainDictionary()) { throw new RuntimeException("Can't initialize the main dictionary"); } changeLanguage("en_US"); } // We need to run the messages added to the handler from LatinIME. The only way to do Loading Loading @@ -177,6 +164,29 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> { } } private void waitForDictionaryToBeLoaded() { int remainingAttempts = 10; while (remainingAttempts > 0 && !mLatinIME.mSuggest.hasMainDictionary()) { try { Thread.sleep(200); } catch (InterruptedException e) { // Don't do much } finally { --remainingAttempts; } } if (!mLatinIME.mSuggest.hasMainDictionary()) { throw new RuntimeException("Can't initialize the main dictionary"); } } private void changeLanguage(final String locale) { SubtypeSwitcher.getInstance().updateSubtype( new ArbitrarySubtype(locale, LatinIME.SUBTYPE_EXTRA_VALUE_ASCII_CAPABLE)); waitForDictionaryToBeLoaded(); } // Helper to avoid writing the try{}catch block each time private static void sleep(final int milliseconds) { try { Loading Loading @@ -273,6 +283,15 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> { assertEquals("simple auto-correct", EXPECTED_RESULT, mTextView.getText().toString()); } public void testAutoCorrectForFrench() { final String STRING_TO_TYPE = "irq "; final String EXPECTED_RESULT = "ira "; changeLanguage("fr"); type(STRING_TO_TYPE); assertEquals("simple auto-correct for French", EXPECTED_RESULT, mTextView.getText().toString()); } public void testAutoCorrectWithPeriod() { final String STRING_TO_TYPE = "tgis."; final String EXPECTED_RESULT = "this."; Loading Loading @@ -375,6 +394,34 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> { mTextView.getText().toString()); } public void testManualPickThenSeparatorForFrench() { final String WORD1_TO_TYPE = "test"; final String WORD2_TO_TYPE = "!"; final String EXPECTED_RESULT = "test !"; changeLanguage("fr"); type(WORD1_TO_TYPE); mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE); type(WORD2_TO_TYPE); assertEquals("manual pick then separator for French", EXPECTED_RESULT, mTextView.getText().toString()); } public void testWordThenSpaceThenPunctuationFromStripTwiceForFrench() { final String WORD_TO_TYPE = "test "; final String PUNCTUATION_FROM_STRIP = "!"; final String EXPECTED_RESULT = "test !!"; changeLanguage("fr"); type(WORD_TO_TYPE); sleep(DELAY_TO_WAIT_FOR_UNDERLINE); runMessages(); assertTrue("type word then type space should display punctuation strip", mLatinIME.isShowingPunctuationList()); mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); assertEquals("type word then type space then punctuation from strip twice for French", EXPECTED_RESULT, mTextView.getText().toString()); } public void testWordThenSpaceThenPunctuationFromKeyboardTwice() { final String WORD_TO_TYPE = "this !!"; final String EXPECTED_RESULT = "this !!"; Loading Loading
java/src/com/android/inputmethod/compat/AbstractCompatWrapper.java +1 −1 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ public abstract class AbstractCompatWrapper { public AbstractCompatWrapper(Object obj) { if (obj == null) { Log.e(TAG, "Invalid input to AbstructCompatWrapper"); Log.e(TAG, "Invalid input to AbstractCompatWrapper"); } mObj = obj; } Loading
java/src/com/android/inputmethod/compat/InputMethodSubtypeCompatWrapper.java +3 −3 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ import java.util.Locale; // TODO: Override this class with the concrete implementation if we need to take care of the // performance. public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper { public class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper { private static final boolean DBG = LatinImeLogger.sDBG; private static final String TAG = InputMethodSubtypeCompatWrapper.class.getSimpleName(); private static final String DEFAULT_LOCALE = "en_US"; Loading Loading @@ -65,7 +65,7 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper public InputMethodSubtypeCompatWrapper(Object subtype) { super((CLASS_InputMethodSubtype != null && CLASS_InputMethodSubtype.isInstance(subtype)) ? subtype : null); ? subtype : new Object()); mDummyNameResId = 0; mDummyIconResId = 0; mDummyLocale = DEFAULT_LOCALE; Loading @@ -76,7 +76,7 @@ public final class InputMethodSubtypeCompatWrapper extends AbstractCompatWrapper // Constructor for creating a dummy subtype. public InputMethodSubtypeCompatWrapper(int nameResId, int iconResId, String locale, String mode, String extraValues) { super(null); super(new Object()); if (DBG) { Log.d(TAG, "CreateInputMethodSubtypeCompatWrapper"); } Loading
tests/src/com/android/inputmethod/latin/ArbitrarySubtype.java 0 → 100644 +54 −0 Original line number Diff line number Diff line /* * 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; import com.android.inputmethod.compat.InputMethodSubtypeCompatWrapper; public class ArbitrarySubtype extends InputMethodSubtypeCompatWrapper { final String mLocale; final String mExtraValue; public ArbitrarySubtype(final String locale, final String extraValue) { super(locale); mLocale = locale; mExtraValue = extraValue; } public String getLocale() { return mLocale; } public String getExtraValue() { return mExtraValue; } public String getMode() { return "keyboard"; } public String getExtraValueOf(final String key) { if (LatinIME.SUBTYPE_EXTRA_VALUE_ASCII_CAPABLE.equals(key)) { return ""; } else { return null; } } public boolean containsExtraValueKey(final String key) { return LatinIME.SUBTYPE_EXTRA_VALUE_ASCII_CAPABLE.equals(key); } }
tests/src/com/android/inputmethod/latin/InputLogicTests.java +61 −14 Original line number Diff line number Diff line Loading @@ -95,20 +95,7 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> { mLatinIME.onStartInputView(ei, false); mLatinIME.onCreateInputMethodInterface().startInput(ic, ei); mInputConnection = ic; // Wait for the main dictionary to be loaded (we need it for auto-correction tests) int remainingAttempts = 10; while (remainingAttempts > 0 && !mLatinIME.mSuggest.hasMainDictionary()) { try { Thread.sleep(100); } catch (InterruptedException e) { // Don't do much } finally { --remainingAttempts; } } if (!mLatinIME.mSuggest.hasMainDictionary()) { throw new RuntimeException("Can't initialize the main dictionary"); } changeLanguage("en_US"); } // We need to run the messages added to the handler from LatinIME. The only way to do Loading Loading @@ -177,6 +164,29 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> { } } private void waitForDictionaryToBeLoaded() { int remainingAttempts = 10; while (remainingAttempts > 0 && !mLatinIME.mSuggest.hasMainDictionary()) { try { Thread.sleep(200); } catch (InterruptedException e) { // Don't do much } finally { --remainingAttempts; } } if (!mLatinIME.mSuggest.hasMainDictionary()) { throw new RuntimeException("Can't initialize the main dictionary"); } } private void changeLanguage(final String locale) { SubtypeSwitcher.getInstance().updateSubtype( new ArbitrarySubtype(locale, LatinIME.SUBTYPE_EXTRA_VALUE_ASCII_CAPABLE)); waitForDictionaryToBeLoaded(); } // Helper to avoid writing the try{}catch block each time private static void sleep(final int milliseconds) { try { Loading Loading @@ -273,6 +283,15 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> { assertEquals("simple auto-correct", EXPECTED_RESULT, mTextView.getText().toString()); } public void testAutoCorrectForFrench() { final String STRING_TO_TYPE = "irq "; final String EXPECTED_RESULT = "ira "; changeLanguage("fr"); type(STRING_TO_TYPE); assertEquals("simple auto-correct for French", EXPECTED_RESULT, mTextView.getText().toString()); } public void testAutoCorrectWithPeriod() { final String STRING_TO_TYPE = "tgis."; final String EXPECTED_RESULT = "this."; Loading Loading @@ -375,6 +394,34 @@ public class InputLogicTests extends ServiceTestCase<LatinIME> { mTextView.getText().toString()); } public void testManualPickThenSeparatorForFrench() { final String WORD1_TO_TYPE = "test"; final String WORD2_TO_TYPE = "!"; final String EXPECTED_RESULT = "test !"; changeLanguage("fr"); type(WORD1_TO_TYPE); mLatinIME.pickSuggestionManually(0, WORD1_TO_TYPE); type(WORD2_TO_TYPE); assertEquals("manual pick then separator for French", EXPECTED_RESULT, mTextView.getText().toString()); } public void testWordThenSpaceThenPunctuationFromStripTwiceForFrench() { final String WORD_TO_TYPE = "test "; final String PUNCTUATION_FROM_STRIP = "!"; final String EXPECTED_RESULT = "test !!"; changeLanguage("fr"); type(WORD_TO_TYPE); sleep(DELAY_TO_WAIT_FOR_UNDERLINE); runMessages(); assertTrue("type word then type space should display punctuation strip", mLatinIME.isShowingPunctuationList()); mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); mLatinIME.pickSuggestionManually(0, PUNCTUATION_FROM_STRIP); assertEquals("type word then type space then punctuation from strip twice for French", EXPECTED_RESULT, mTextView.getText().toString()); } public void testWordThenSpaceThenPunctuationFromKeyboardTwice() { final String WORD_TO_TYPE = "this !!"; final String EXPECTED_RESULT = "this !!"; Loading