aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src')
-rw-r--r--tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java5
-rw-r--r--tests/src/com/android/inputmethod/latin/RecapitalizeStatusTests.java191
-rw-r--r--tests/src/com/android/inputmethod/latin/RichInputConnectionTests.java5
-rw-r--r--tests/src/com/android/inputmethod/latin/StringUtilsTests.java36
-rw-r--r--tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java60
-rw-r--r--tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java10
6 files changed, 286 insertions, 21 deletions
diff --git a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
index eb484084e..74506d26a 100644
--- a/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
+++ b/tests/src/com/android/inputmethod/keyboard/internal/MockKeyboardSwitcher.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard.internal;
import android.text.TextUtils;
import com.android.inputmethod.latin.Constants;
+import com.android.inputmethod.latin.RecapitalizeStatus;
public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
public interface MockConstants {
@@ -120,7 +121,7 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
@Override
public void requestUpdatingShiftState() {
- mState.onUpdateShiftState(mAutoCapsState);
+ mState.onUpdateShiftState(mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
}
@Override
@@ -162,7 +163,7 @@ public class MockKeyboardSwitcher implements KeyboardState.SwitchActions {
}
public void updateShiftState() {
- mState.onUpdateShiftState(mAutoCapsState);
+ mState.onUpdateShiftState(mAutoCapsState, RecapitalizeStatus.NOT_A_RECAPITALIZE_MODE);
}
public void loadKeyboard() {
diff --git a/tests/src/com/android/inputmethod/latin/RecapitalizeStatusTests.java b/tests/src/com/android/inputmethod/latin/RecapitalizeStatusTests.java
new file mode 100644
index 000000000..9d7203e5a
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/RecapitalizeStatusTests.java
@@ -0,0 +1,191 @@
+/*
+ * 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 com.android.inputmethod.latin;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.util.Locale;
+
+@SmallTest
+public class RecapitalizeStatusTests extends AndroidTestCase {
+ public void testTrim() {
+ final RecapitalizeStatus status = new RecapitalizeStatus();
+ status.initialize(30, 40, "abcdefghij", Locale.ENGLISH, " ");
+ status.trim();
+ assertEquals("abcdefghij", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(40, status.getNewCursorEnd());
+
+ status.initialize(30, 44, " abcdefghij", Locale.ENGLISH, " ");
+ status.trim();
+ assertEquals("abcdefghij", status.getRecapitalizedString());
+ assertEquals(34, status.getNewCursorStart());
+ assertEquals(44, status.getNewCursorEnd());
+
+ status.initialize(30, 40, "abcdefgh ", Locale.ENGLISH, " ");
+ status.trim();
+ assertEquals("abcdefgh", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(38, status.getNewCursorEnd());
+
+ status.initialize(30, 45, " abcdefghij ", Locale.ENGLISH, " ");
+ status.trim();
+ assertEquals("abcdefghij", status.getRecapitalizedString());
+ assertEquals(33, status.getNewCursorStart());
+ assertEquals(43, status.getNewCursorEnd());
+ }
+
+ public void testRotate() {
+ final RecapitalizeStatus status = new RecapitalizeStatus();
+ status.initialize(29, 40, "abcd efghij", Locale.ENGLISH, " ");
+ status.rotate();
+ assertEquals("Abcd Efghij", status.getRecapitalizedString());
+ assertEquals(29, status.getNewCursorStart());
+ assertEquals(40, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("ABCD EFGHIJ", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("abcd efghij", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("Abcd Efghij", status.getRecapitalizedString());
+
+ status.initialize(29, 40, "Abcd Efghij", Locale.ENGLISH, " ");
+ status.rotate();
+ assertEquals("ABCD EFGHIJ", status.getRecapitalizedString());
+ assertEquals(29, status.getNewCursorStart());
+ assertEquals(40, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("abcd efghij", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("Abcd Efghij", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("ABCD EFGHIJ", status.getRecapitalizedString());
+
+ status.initialize(29, 40, "ABCD EFGHIJ", Locale.ENGLISH, " ");
+ status.rotate();
+ assertEquals("abcd efghij", status.getRecapitalizedString());
+ assertEquals(29, status.getNewCursorStart());
+ assertEquals(40, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("Abcd Efghij", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("ABCD EFGHIJ", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("abcd efghij", status.getRecapitalizedString());
+
+ status.initialize(29, 39, "AbCDefghij", Locale.ENGLISH, " ");
+ status.rotate();
+ assertEquals("abcdefghij", status.getRecapitalizedString());
+ assertEquals(29, status.getNewCursorStart());
+ assertEquals(39, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("Abcdefghij", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("ABCDEFGHIJ", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("AbCDefghij", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("abcdefghij", status.getRecapitalizedString());
+
+ status.initialize(29, 40, "Abcd efghij", Locale.ENGLISH, " ");
+ status.rotate();
+ assertEquals("abcd efghij", status.getRecapitalizedString());
+ assertEquals(29, status.getNewCursorStart());
+ assertEquals(40, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("Abcd Efghij", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("ABCD EFGHIJ", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("Abcd efghij", status.getRecapitalizedString());
+ status.rotate();
+ assertEquals("abcd efghij", status.getRecapitalizedString());
+
+ status.initialize(30, 34, "grüß", Locale.GERMAN, " "); status.rotate();
+ assertEquals("Grüß", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(34, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("GRÜSS", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(35, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("grüß", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(34, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("Grüß", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(34, status.getNewCursorEnd());
+
+ status.initialize(30, 33, "œuf", Locale.FRENCH, " "); status.rotate();
+ assertEquals("Œuf", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("ŒUF", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("œuf", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("Œuf", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+
+ status.initialize(30, 33, "œUf", Locale.FRENCH, " "); status.rotate();
+ assertEquals("œuf", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("Œuf", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("ŒUF", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("œUf", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("œuf", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(33, status.getNewCursorEnd());
+
+ status.initialize(30, 35, "école", Locale.FRENCH, " "); status.rotate();
+ assertEquals("École", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(35, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("ÉCOLE", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(35, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("école", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(35, status.getNewCursorEnd());
+ status.rotate();
+ assertEquals("École", status.getRecapitalizedString());
+ assertEquals(30, status.getNewCursorStart());
+ assertEquals(35, status.getNewCursorEnd());
+ }
+}
diff --git a/tests/src/com/android/inputmethod/latin/RichInputConnectionTests.java b/tests/src/com/android/inputmethod/latin/RichInputConnectionTests.java
index dc8837dab..aacd60f4d 100644
--- a/tests/src/com/android/inputmethod/latin/RichInputConnectionTests.java
+++ b/tests/src/com/android/inputmethod/latin/RichInputConnectionTests.java
@@ -85,6 +85,11 @@ public class RichInputConnectionTests extends AndroidTestCase {
public boolean endBatchEdit() {
return true;
}
+
+ @Override
+ public boolean finishComposingText() {
+ return true;
+ }
}
private class MockInputMethodService extends InputMethodService {
diff --git a/tests/src/com/android/inputmethod/latin/StringUtilsTests.java b/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
index 136faff71..1e3cc8ad4 100644
--- a/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
+++ b/tests/src/com/android/inputmethod/latin/StringUtilsTests.java
@@ -216,21 +216,25 @@ public class StringUtilsTests extends AndroidTestCase {
" \n,.;!?*()&", Locale.ENGLISH);
}
- public void testContainsAny() {
- assertFalse(StringUtils.containsAny("", " "));
- assertFalse(StringUtils.containsAny("test and retest", ""));
- assertTrue(StringUtils.containsAny("test and retest", "x3iq o"));
- assertTrue(StringUtils.containsAny("test and retest", "x3iqo "));
- assertTrue(StringUtils.containsAny("test and retest", " x3iqo"));
- assertFalse(StringUtils.containsAny("test and retest", "x3iqo"));
- assertTrue(StringUtils.containsAny("test and retest", "tse "));
- assertTrue(StringUtils.containsAny("test and retest.", ".?()"));
- assertFalse(StringUtils.containsAny("test and retest", ".?()"));
- // Surrogate pair
- assertTrue(StringUtils.containsAny("test and \uD861\uDED7 retest.", "\uD861\uDED7"));
- // Ill-formed string
- assertFalse(StringUtils.containsAny("test and \uD861 retest.", "\uD861\uDED7"));
- // Ill-formed string
- assertFalse(StringUtils.containsAny("test and \uDED7 retest.", "\uD861\uDED7"));
+ public void testLooksLikeURL() {
+ assertTrue(StringUtils.lastPartLooksLikeURL("http://www.google."));
+ assertFalse(StringUtils.lastPartLooksLikeURL("word wo"));
+ assertTrue(StringUtils.lastPartLooksLikeURL("/etc/foo"));
+ assertFalse(StringUtils.lastPartLooksLikeURL("left/right"));
+ assertTrue(StringUtils.lastPartLooksLikeURL("www.goo"));
+ assertTrue(StringUtils.lastPartLooksLikeURL("www."));
+ assertFalse(StringUtils.lastPartLooksLikeURL("U.S.A"));
+ assertFalse(StringUtils.lastPartLooksLikeURL("U.S.A."));
+ assertTrue(StringUtils.lastPartLooksLikeURL("rtsp://foo."));
+ assertTrue(StringUtils.lastPartLooksLikeURL("://"));
+ assertFalse(StringUtils.lastPartLooksLikeURL("abc/"));
+ assertTrue(StringUtils.lastPartLooksLikeURL("abc.def/ghi"));
+ assertFalse(StringUtils.lastPartLooksLikeURL("abc.def"));
+ // TODO: ideally this would not look like a URL, but to keep down the complexity of the
+ // code for now True is acceptable.
+ assertTrue(StringUtils.lastPartLooksLikeURL("abc./def"));
+ // TODO: ideally this would not look like a URL, but to keep down the complexity of the
+ // code for now True is acceptable.
+ assertTrue(StringUtils.lastPartLooksLikeURL(".abc/def"));
}
}
diff --git a/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java b/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java
new file mode 100644
index 000000000..916252292
--- /dev/null
+++ b/tests/src/com/android/inputmethod/latin/SuggestedWordsTests.java
@@ -0,0 +1,60 @@
+/*
+ * 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 com.android.inputmethod.latin;
+
+import com.android.inputmethod.latin.SuggestedWords.SuggestedWordInfo;
+
+import android.test.AndroidTestCase;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import java.util.ArrayList;
+import java.util.Locale;
+
+@SmallTest
+public class SuggestedWordsTests extends AndroidTestCase {
+ public void testGetSuggestedWordsExcludingTypedWord() {
+ final String TYPED_WORD = "typed";
+ final int TYPED_WORD_FREQ = 5;
+ final int NUMBER_OF_ADDED_SUGGESTIONS = 5;
+ final ArrayList<SuggestedWordInfo> list = CollectionUtils.newArrayList();
+ list.add(new SuggestedWordInfo(TYPED_WORD, TYPED_WORD_FREQ,
+ SuggestedWordInfo.KIND_TYPED, ""));
+ for (int i = 0; i < NUMBER_OF_ADDED_SUGGESTIONS; ++i) {
+ list.add(new SuggestedWordInfo("" + i, 1, SuggestedWordInfo.KIND_CORRECTION, ""));
+ }
+
+ final SuggestedWords words = new SuggestedWords(
+ list,
+ false /* typedWordValid */,
+ false /* willAutoCorrect */,
+ false /* isPunctuationSuggestions */,
+ false /* isObsoleteSuggestions */,
+ false /* isPrediction*/);
+ assertEquals(NUMBER_OF_ADDED_SUGGESTIONS + 1, words.size());
+ assertEquals("typed", words.getWord(0));
+ assertEquals(SuggestedWordInfo.KIND_TYPED, words.getInfo(0).mKind);
+ assertEquals("0", words.getWord(1));
+ assertEquals(SuggestedWordInfo.KIND_CORRECTION, words.getInfo(1).mKind);
+ assertEquals("4", words.getWord(5));
+ assertEquals(SuggestedWordInfo.KIND_CORRECTION, words.getInfo(5).mKind);
+
+ final SuggestedWords wordsWithoutTyped = words.getSuggestedWordsExcludingTypedWord();
+ assertEquals(words.size() - 1, wordsWithoutTyped.size());
+ assertEquals("0", wordsWithoutTyped.getWord(0));
+ assertEquals(SuggestedWordInfo.KIND_CORRECTION, wordsWithoutTyped.getInfo(0).mKind);
+ }
+}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java
index bd8729203..b704d08b3 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictIOTests.java
@@ -51,7 +51,7 @@ import java.util.Set;
@LargeTest
public class BinaryDictIOTests extends AndroidTestCase {
private static final String TAG = BinaryDictIOTests.class.getSimpleName();
- private static final int MAX_UNIGRAMS = 1000;
+ private static final int MAX_UNIGRAMS = 100;
private static final int UNIGRAM_FREQ = 10;
private static final int BIGRAM_FREQ = 50;
private static final int TOLERANCE_OF_BIGRAM_FREQ = 5;
@@ -135,9 +135,13 @@ public class BinaryDictIOTests extends AndroidTestCase {
while (count > 0) {
final long r = Math.abs(random.nextInt());
if (r < 0) continue;
- // Don't insert 0~20, but insert any other code point.
+ // Don't insert 0~0x20, but insert any other code point.
// Code points are in the range 0~0x10FFFF.
- builder.appendCodePoint((int)(20 + r % (0x10FFFF - 20)));
+ final int candidateCodePoint = (int)(0x20 + r % (Character.MAX_CODE_POINT - 0x20));
+ // Code points between MIN_ and MAX_SURROGATE are not valid on their own.
+ if (candidateCodePoint >= Character.MIN_SURROGATE
+ && candidateCodePoint <= Character.MAX_SURROGATE) continue;
+ builder.appendCodePoint(candidateCodePoint);
--count;
}
return builder.toString();