aboutsummaryrefslogtreecommitdiffstats
path: root/tests/src/com/android/inputmethod/latin/WordComposerTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/src/com/android/inputmethod/latin/WordComposerTests.java')
-rw-r--r--tests/src/com/android/inputmethod/latin/WordComposerTests.java46
1 files changed, 36 insertions, 10 deletions
diff --git a/tests/src/com/android/inputmethod/latin/WordComposerTests.java b/tests/src/com/android/inputmethod/latin/WordComposerTests.java
index 1434c6b63..a67f6a4ac 100644
--- a/tests/src/com/android/inputmethod/latin/WordComposerTests.java
+++ b/tests/src/com/android/inputmethod/latin/WordComposerTests.java
@@ -26,8 +26,15 @@ import android.test.suitebuilder.annotation.SmallTest;
public class WordComposerTests extends AndroidTestCase {
public void testMoveCursor() {
final WordComposer wc = new WordComposer();
+ // BMP is the Basic Multilingual Plane, as defined by Unicode. This includes
+ // most characters for most scripts, including all Roman alphabet languages,
+ // CJK, Arabic, Hebrew. Notable exceptions include some emoji and some
+ // very rare Chinese ideograms. BMP characters can be encoded on 2 bytes
+ // in UTF-16, whereas those outside the BMP need 4 bytes.
+ // http://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane
final String STR_WITHIN_BMP = "abcdef";
- wc.setComposingWord(STR_WITHIN_BMP, null);
+ final String PREVWORD = "prevword";
+ wc.setComposingWord(STR_WITHIN_BMP, PREVWORD, null /* keyboard */);
assertEquals(wc.size(),
STR_WITHIN_BMP.codePointCount(0, STR_WITHIN_BMP.length()));
assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
@@ -43,13 +50,20 @@ public class WordComposerTests extends AndroidTestCase {
// Move the cursor to after the 'f'
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
+ // Check the previous word is still there
+ assertEquals(PREVWORD, wc.getPreviousWord());
// Move the cursor past the end of the word
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(15));
+ // Do what LatinIME does when the cursor is moved outside of the word,
+ // and check the behavior is correct.
+ wc.reset();
+ assertNull(wc.getPreviousWord());
// \uD861\uDED7 is 𨛗, a character outside the BMP
final String STR_WITH_SUPPLEMENTARY_CHAR = "abcde\uD861\uDED7fgh";
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null /* previousWord */,
+ null /* keyboard */);
assertEquals(wc.size(), STR_WITH_SUPPLEMENTARY_CHAR.codePointCount(0,
STR_WITH_SUPPLEMENTARY_CHAR.length()));
assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
@@ -59,34 +73,46 @@ public class WordComposerTests extends AndroidTestCase {
assertTrue(wc.isCursorFrontOrMiddleOfComposingWord());
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(1));
assertFalse(wc.isCursorFrontOrMiddleOfComposingWord());
+ assertNull(wc.getPreviousWord());
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, STR_WITHIN_BMP, null /* keyboard */);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(7));
+ assertEquals(STR_WITHIN_BMP, wc.getPreviousWord());
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, STR_WITH_SUPPLEMENTARY_CHAR,
+ null /* keyboard */);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(7));
+ assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPreviousWord());
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, STR_WITHIN_BMP, null /* keyboard */);
wc.setCursorPositionWithinWord(3);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(-3));
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-1));
+ assertEquals(STR_WITHIN_BMP, wc.getPreviousWord());
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null /* previousWord */,
+ null /* keyboard */);
wc.setCursorPositionWithinWord(3);
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-9));
+ assertNull(wc.getPreviousWord());
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, STR_WITH_SUPPLEMENTARY_CHAR,
+ null /* keyboard */);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(-10));
+ assertEquals(STR_WITH_SUPPLEMENTARY_CHAR, wc.getPreviousWord());
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null /* previousWord */,
+ null /* keyboard */);
assertFalse(wc.moveCursorByAndReturnIfInsideComposingWord(-11));
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null /* previousWord */,
+ null /* keyboard */);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(0));
- wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null);
+ wc.setComposingWord(STR_WITH_SUPPLEMENTARY_CHAR, null /* previousWord */,
+ null /* keyboard */);
wc.setCursorPositionWithinWord(2);
assertTrue(wc.moveCursorByAndReturnIfInsideComposingWord(0));
}