aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2014-03-05 18:42:00 +0900
committerJean Chalard <jchalard@google.com>2014-03-20 23:16:53 +0900
commit72b67f65411cf07cb8cb2d52e859f46d9d5b91d4 (patch)
treed5cb0f67576e73fb0ab77844d48885a5b042efbb /tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
parentc9498827f62449ebd040408f52ef01bd0bf3f07b (diff)
downloadlatinime-72b67f65411cf07cb8cb2d52e859f46d9d5b91d4.tar.gz
latinime-72b67f65411cf07cb8cb2d52e859f46d9d5b91d4.tar.xz
latinime-72b67f65411cf07cb8cb2d52e859f46d9d5b91d4.zip
Rework the logic that tells if the cursor touches words
Bug: 13312942 Change-Id: I6be6a558bbc6c88508150f9c25cadbd0240ff88e
Diffstat (limited to 'tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java')
-rw-r--r--tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java93
1 files changed, 89 insertions, 4 deletions
diff --git a/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java b/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
index 7f0743543..842f3f3a9 100644
--- a/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
+++ b/tests/src/com/android/inputmethod/latin/RichInputConnectionAndTextRangeTests.java
@@ -89,6 +89,10 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
mExtractedText = extractedText;
}
+ public int cursorPos() {
+ return mTextBefore.length();
+ }
+
/* (non-Javadoc)
* @see android.view.inputmethod.InputConnectionWrapper#getTextBeforeCursor(int, int)
*/
@@ -131,13 +135,16 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
}
private class MockInputMethodService extends InputMethodService {
- InputConnection mInputConnection;
- public void setInputConnection(final InputConnection inputConnection) {
- mInputConnection = inputConnection;
+ private MockConnection mMockConnection;
+ public void setInputConnection(final MockConnection mockConnection) {
+ mMockConnection = mockConnection;
+ }
+ public int cursorPos() {
+ return mMockConnection.cursorPos();
}
@Override
public InputConnection getCurrentInputConnection() {
- return mInputConnection;
+ return mMockConnection;
}
}
@@ -336,4 +343,82 @@ public class RichInputConnectionAndTextRangeTests extends AndroidTestCase {
suggestions = r.getSuggestionSpansAtWord();
assertEquals(suggestions.length, 0);
}
+
+ public void testCursorTouchingWord() {
+ final MockInputMethodService ims = new MockInputMethodService();
+ final RichInputConnection ic = new RichInputConnection(ims);
+ final SpacingAndPunctuations sap = mSpacingAndPunctuations;
+
+ ims.setInputConnection(new MockConnection("users", 5));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("users'", 5));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("users'", 6));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("'users'", 6));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("'users'", 7));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("users '", 6));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("users '", 7));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("re-", 3));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("re--", 4));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("-", 1));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection("--", 2));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection(" -", 2));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection(" --", 3));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection(" users '", 1));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection(" users '", 3));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection(" users '", 7));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection(" users are", 7));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertTrue(ic.isCursorTouchingWord(sap));
+
+ ims.setInputConnection(new MockConnection(" users 'are", 7));
+ ic.resetCachesUponCursorMoveAndReturnSuccess(ims.cursorPos(), ims.cursorPos(), true);
+ assertFalse(ic.isCursorTouchingWord(sap));
+ }
}