am a1ea69c9: am cad47af9: Merge "Fix (Qwerty|MultiTap)KeyListenerTest Tests" into froyo
* commit 'a1ea69c9ce9766281e8d0ec43c482937fafdd599':
Fix (Qwerty|MultiTap)KeyListenerTest Tests
diff --git a/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
index 3bf059b..175047e 100644
--- a/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/MultiTapKeyListenerTest.java
@@ -26,7 +26,6 @@
import android.app.Activity;
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2;
-import android.text.Editable;
import android.text.InputType;
import android.text.Selection;
import android.text.Spannable;
@@ -34,10 +33,11 @@
import android.text.method.MultiTapKeyListener;
import android.text.method.TextKeyListener.Capitalize;
import android.view.KeyEvent;
-import android.view.View;
import android.widget.TextView;
import android.widget.TextView.BufferType;
+import java.util.concurrent.TimeUnit;
+
@TestTargetClass(MultiTapKeyListener.class)
public class MultiTapKeyListenerTest extends
ActivityInstrumentationTestCase2<KeyListenerStubActivity> {
@@ -118,16 +118,126 @@
}
}
- @Override
- public void sendRepeatedKeys(int... keys) {
- super.sendRepeatedKeys(keys);
- waitForListenerTimeout();
+ public void testOnKeyDown_capitalizeNone() {
+ MultiTapKeyListener keyListener = MultiTapKeyListener.getInstance(false, Capitalize.NONE);
+
+ prepareEmptyTextView();
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_4, 2);
+ assertEquals("h", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_3, 2);
+ assertEquals("he", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_5, 3);
+ assertEquals("hel", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_5, 3);
+ assertEquals("hell", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_6, 3);
+ assertEquals("hello", mTextView.getText().toString());
}
- /**
- * Wait for TIME_OUT, or listener will accept key event as multi tap rather than a new key.
- */
- private void waitForListenerTimeout() {
+ public void testOnKeyDown_capitalizeCharacters() {
+ MultiTapKeyListener keyListener = MultiTapKeyListener.getInstance(false,
+ Capitalize.CHARACTERS);
+
+ prepareEmptyTextView();
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_4, 2);
+ assertEquals("H", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_3, 2);
+ assertEquals("HE", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_5, 3);
+ assertEquals("HEL", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_5, 3);
+ assertEquals("HELL", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_6, 3);
+ assertEquals("HELLO", mTextView.getText().toString());
+ }
+
+ public void testOnKeyDown_capitalizeSentences() {
+ MultiTapKeyListener keyListener = MultiTapKeyListener.getInstance(false,
+ Capitalize.SENTENCES);
+
+ prepareEmptyTextView();
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_4, 2);
+ assertEquals("H", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_4, 3);
+ assertEquals("Hi", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_1, 1);
+ assertEquals("Hi.", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_POUND, 1);
+ assertEquals("Hi. ", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_2, 2);
+ assertEquals("Hi. B", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_9, 3);
+ assertEquals("Hi. By", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_3, 2);
+ assertEquals("Hi. Bye", mTextView.getText().toString());
+ }
+
+ public void testOnKeyDown_capitalizeWords() {
+ MultiTapKeyListener keyListener = MultiTapKeyListener.getInstance(false,
+ Capitalize.WORDS);
+
+ prepareEmptyTextView();
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_4, 2);
+ assertEquals("H", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_4, 3);
+ assertEquals("Hi", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_POUND, 1);
+ assertEquals("Hi ", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_2, 2);
+ assertEquals("Hi B", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_9, 3);
+ assertEquals("Hi By", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_3, 2);
+ assertEquals("Hi Bye", mTextView.getText().toString());
+ }
+
+ private void prepareEmptyTextView() {
+ mActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ mTextView.setText("", BufferType.EDITABLE);
+ Selection.setSelection(mTextView.getEditableText(), 0, 0);
+ }
+ });
+ mInstrumentation.waitForIdleSync();
+ assertEquals("", mTextView.getText().toString());
+ }
+
+ private void callOnKeyDown(final MultiTapKeyListener keyListener, final int keyCode,
+ final int numTimes) {
+ mActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ for (int i = 0; i < numTimes; i++) {
+ keyListener.onKeyDown(mTextView, mTextView.getEditableText(), keyCode,
+ new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
+ }
+ }
+ });
+ mInstrumentation.waitForIdleSync();
+
+ // Wait a bit in order to distinguish this character and the next one.
try {
Thread.sleep(TIME_OUT);
} catch (InterruptedException e) {
@@ -135,312 +245,6 @@
}
}
- /**
- * Check point when Capitalize.NONE and autotext is false:
- * 1. press KEYCODE_4 twice, text is "h".
- * 2. press KEYCODE_3 twice, text is "he".
- * 3. press KEYCODE_5 three times, text is "hel".
- * 4. press KEYCODE_5 three times, text is "hell".
- * 5. press KEYCODE_8 twice, text is "hellu".
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- public void testPressKey1() {
- final MultiTapKeyListener multiTapKeyListener
- = MultiTapKeyListener.getInstance(false, Capitalize.NONE);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(multiTapKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_4);
- assertEquals("h", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_3);
- assertEquals("he", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("hel", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("hell", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_8);
- assertEquals("hellu", mTextView.getText().toString());
- }
-
- /**
- * Check point when Capitalize.NONE and autotext is true:
- * 1. press KEYCODE_4 twice, text is "h".
- * 2. press KEYCODE_3 twice, text is "he".
- * 3. press KEYCODE_5 three times, text is "hel".
- * 4. press KEYCODE_5 three times, text is "hell".
- * 5. press KEYCODE_8 twice, text should not be "hellu".
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- @ToBeFixed(bug = "1738241", explanation = "can not correct spelling automatically")
- public void testPressKey2() {
- final MultiTapKeyListener multiTapKeyListener
- = MultiTapKeyListener.getInstance(true, Capitalize.NONE);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(multiTapKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_4);
- assertEquals("h", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_3);
- assertEquals("he", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("hel", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("hell", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_8);
-// assertFalse("hellu".equals(mEditText.getText().toString())); issue 1738241
- }
-
- /**
- * Check point when Capitalize.SENTENCES and autotext is false:
- * 1. press KEYCODE_4 twice, text is "H".
- * 2. press KEYCODE_3 twice, text is "He".
- * 3. press KEYCODE_5 three times, text is "Hel".
- * 4. press KEYCODE_5 three times, text is "Hell".
- * 5. press KEYCODE_8 twice, text is "Hellu".
- * 6. press KEYCODE_1 once, text is "Hellu.".
- * 7. press KEYCODE_POUND once, text is "Hellu. ".
- * 8. press KEYCODE_6 once, text is "Hellu. M".
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- public void testPressKey3() {
- final MultiTapKeyListener multiTapKeyListener
- = MultiTapKeyListener.getInstance(false, Capitalize.SENTENCES);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(multiTapKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_4);
- assertEquals("H", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_3);
- assertEquals("He", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("Hel", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("Hell", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_8);
- assertEquals("Hellu", mTextView.getText().toString());
-
- sendRepeatedKeys(1, KeyEvent.KEYCODE_1);
- assertEquals("Hellu.", mTextView.getText().toString());
-
- sendRepeatedKeys(1, KeyEvent.KEYCODE_POUND);
- assertEquals("Hellu. ", mTextView.getText().toString());
-
- sendRepeatedKeys(1, KeyEvent.KEYCODE_6);
- assertEquals("Hellu. M", mTextView.getText().toString());
- }
-
- /**
- * Check point when Capitalize.SENTENCES and autotext is true:
- * 1. press KEYCODE_4 twice, text is "H".
- * 2. press KEYCODE_3 twice, text is "He".
- * 3. press KEYCODE_5 three times, text is "Hel".
- * 4. press KEYCODE_5 three times, text is "Hell".
- * 5. press KEYCODE_8 twice, text is "Hellu".
- * 6. press KEYCODE_1 once, text is "Hellu.".
- * 7. press KEYCODE_POUND once, text is "Hellu. ".
- * 8. press KEYCODE_6 once, text should not be "Hellu. M".
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- @ToBeFixed(bug = "1738241", explanation = "can not correct spelling automatically")
- public void testPressKey4() {
- final MultiTapKeyListener multiTapKeyListener
- = MultiTapKeyListener.getInstance(true, Capitalize.SENTENCES);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(multiTapKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_4);
- assertEquals("H", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_3);
- assertEquals("He", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("Hel", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("Hell", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_8);
- assertEquals("Hellu", mTextView.getText().toString());
-
- sendRepeatedKeys(1, KeyEvent.KEYCODE_1);
-// assertFalse("Hellu.".equals(mEditText.getText().toString())); issue 1738241
-//
-// sendRepeatedKeys(1, KeyEvent.KEYCODE_POUND);
-// assertEquals("Hellu. ", mEditText.getText().toString());
-//
-// sendRepeatedKeys(1, KeyEvent.KEYCODE_6);
-// assertEquals("Hellu. M", mEditText.getText().toString());
- }
-
- /**
- * Check point when Capitalize.WORDS and autotext is false:
- * 1. press KEYCODE_4 twice, text is "H".
- * 2. press KEYCODE_3 twice, text is "He".
- * 3. press KEYCODE_5 three times, text is "Hel".
- * 4. press KEYCODE_5 three times, text is "Hell".
- * 5. press KEYCODE_8 twice, text is "Hellu".
- * 6. press KEYCODE_POUND once, text is "Hellu ".
- * 7. press KEYCODE_6 once, text is "Hellu M".
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- public void testPressKey5() {
- final MultiTapKeyListener multiTapKeyListener
- = MultiTapKeyListener.getInstance(false, Capitalize.WORDS);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(multiTapKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_4);
- assertEquals("H", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_3);
- assertEquals("He", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("Hel", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("Hell", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_8);
- assertEquals("Hellu", mTextView.getText().toString());
-
- sendRepeatedKeys(1, KeyEvent.KEYCODE_POUND);
- assertEquals("Hellu ", mTextView.getText().toString());
-
- sendRepeatedKeys(1, KeyEvent.KEYCODE_6);
- assertEquals("Hellu M", mTextView.getText().toString());
- }
-
- /**
- * Check point when Capitalize.CHARACTERS and autotext is false:
- * 1. press KEYCODE_4 twice, text is "H".
- * 2. press KEYCODE_3 twice, text is "HE".
- * 3. press KEYCODE_5 three times, text is "HEL".
- * 4. press KEYCODE_5 three times, text is "HELL".
- * 5. press KEYCODE_8 twice, text is "HELLU".
- * 6. press KEYCODE_POUND once, text is "HELLU ".
- * 7. press KEYCODE_6 once, text is "HELLU M".
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- public void testPressKey6() {
- final MultiTapKeyListener multiTapKeyListener
- = MultiTapKeyListener.getInstance(false, Capitalize.CHARACTERS);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(multiTapKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_4);
- assertEquals("H", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_3);
- assertEquals("HE", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("HEL", mTextView.getText().toString());
-
- sendRepeatedKeys(3, KeyEvent.KEYCODE_5);
- assertEquals("HELL", mTextView.getText().toString());
-
- sendRepeatedKeys(2, KeyEvent.KEYCODE_8);
- assertEquals("HELLU", mTextView.getText().toString());
-
- sendRepeatedKeys(1, KeyEvent.KEYCODE_POUND);
- assertEquals("HELLU ", mTextView.getText().toString());
-
- sendRepeatedKeys(1, KeyEvent.KEYCODE_6);
- assertEquals("HELLU M", mTextView.getText().toString());
- }
-
@TestTargetNew(
level = TestLevel.COMPLETE,
method = "getInstance",
diff --git a/tests/tests/text/src/android/text/method/cts/QwertyKeyListenerTest.java b/tests/tests/text/src/android/text/method/cts/QwertyKeyListenerTest.java
index 5ae8cae..c86dba3 100644
--- a/tests/tests/text/src/android/text/method/cts/QwertyKeyListenerTest.java
+++ b/tests/tests/text/src/android/text/method/cts/QwertyKeyListenerTest.java
@@ -26,7 +26,6 @@
import android.app.Activity;
import android.app.Instrumentation;
import android.test.ActivityInstrumentationTestCase2;
-import android.text.Editable;
import android.text.InputType;
import android.text.Selection;
import android.text.Spannable;
@@ -35,7 +34,6 @@
import android.text.method.TextKeyListener;
import android.text.method.TextKeyListener.Capitalize;
import android.view.KeyEvent;
-import android.view.View;
import android.widget.TextView;
import android.widget.TextView.BufferType;
@@ -71,253 +69,121 @@
new QwertyKeyListener(null, true);
}
- /**
- * Check point when Capitalize.NONE and autotext is true:
- * 1. press KEYCODE_H, text is "h".
- * 2. press KEYCODE_E, text is "he".
- * 3. press KEYCODE_L, text is "hel".
- * 4. press KEYCODE_L, text is "hell".
- * 5. press KEYCODE_U, text should not be "hellu".
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- @ToBeFixed(bug = "1738241", explanation = "can not correct spelling automatically")
- public void testPressKey1() {
- final QwertyKeyListener qwertyKeyListener
- = QwertyKeyListener.getInstance(true, Capitalize.NONE);
+ public void testOnKeyDown_capitalizeNone() {
+ QwertyKeyListener keyListener = QwertyKeyListener.getInstance(false, Capitalize.NONE);
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(qwertyKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
+ prepareEmptyTextView();
- sendKeys(KeyEvent.KEYCODE_H);
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_H);
assertEquals("h", mTextView.getText().toString());
- sendKeys(KeyEvent.KEYCODE_E);
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_E);
assertEquals("he", mTextView.getText().toString());
- sendKeys(KeyEvent.KEYCODE_L);
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_L);
assertEquals("hel", mTextView.getText().toString());
- sendKeys(KeyEvent.KEYCODE_L);
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_L);
assertEquals("hell", mTextView.getText().toString());
- sendKeys(KeyEvent.KEYCODE_U);
-// assertFalse("hellu".equals(mTextView.getText().toString())); issue 1738241
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_O);
+ assertEquals("hello", mTextView.getText().toString());
}
- /**
- * Check point when Capitalize.NONE and autotext is false:
- * 1. press KEYCODE_H, text is "h".
- * 2. press KEYCODE_E, text is "he".
- * 3. press KEYCODE_L, text is "hel".
- * 4. press KEYCODE_L, text is "hell".
- * 5. press KEYCODE_U, text is "hellu".
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- public void testPressKey2() {
- final QwertyKeyListener qwertyKeyListener
- = QwertyKeyListener.getInstance(false, Capitalize.NONE);
+ public void testOnKeyDown_capitalizeCharacters() {
+ QwertyKeyListener keyListener = QwertyKeyListener.getInstance(false,
+ Capitalize.CHARACTERS);
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(qwertyKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
+ prepareEmptyTextView();
- sendKeys(KeyEvent.KEYCODE_H);
- assertEquals("h", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_E);
- assertEquals("he", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_L);
- assertEquals("hel", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_L);
- assertEquals("hell", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_U);
- assertEquals("hellu", mTextView.getText().toString());
- }
-
- /**
- * Check point when Capitalize.SENTENCES and autotext is false:
- * 1. press KEYCODE_H, text is "H".
- * 2. press KEYCODE_E, text is "He".
- * 3. press KEYCODE_L, text is "Hel".
- * 4. press KEYCODE_L, text is "Hell".
- * 5. press KEYCODE_U, text is "Hellu".
- * 6. press KEYCODE_PERIOD, text is "Hellu."
- * 7. press KEYCODE_SPACE, text is "Hellu. "
- * 8. press KEYCODE_H, text is "Hellu. H"
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- public void testPressKey3() {
- final QwertyKeyListener qwertyKeyListener
- = QwertyKeyListener.getInstance(false, Capitalize.SENTENCES);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(qwertyKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_H);
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_H);
assertEquals("H", mTextView.getText().toString());
- sendKeys(KeyEvent.KEYCODE_E);
- assertEquals("He", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_L);
- assertEquals("Hel", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_L);
- assertEquals("Hell", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_U);
- assertEquals("Hellu", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_PERIOD);
- assertEquals("Hellu.", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_SPACE);
- assertEquals("Hellu. ", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_H);
- assertEquals("Hellu. H", mTextView.getText().toString());
- }
-
- /**
- * Check point when Capitalize.WORDS and autotext is false:
- * 1. press KEYCODE_H, text is "H".
- * 2. press KEYCODE_E, text is "He".
- * 3. press KEYCODE_L, text is "Hel".
- * 4. press KEYCODE_L, text is "Hell".
- * 5. press KEYCODE_U, text is "Hellu".
- * 7. press KEYCODE_SPACE, text is "Hellu "
- * 8. press KEYCODE_H, text is "Hellu H"
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- public void testPressKey4() {
- final QwertyKeyListener qwertyKeyListener
- = QwertyKeyListener.getInstance(false, Capitalize.WORDS);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(qwertyKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_H);
- assertEquals("H", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_E);
- assertEquals("He", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_L);
- assertEquals("Hel", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_L);
- assertEquals("Hell", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_U);
- assertEquals("Hellu", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_SPACE);
- assertEquals("Hellu ", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_H);
- assertEquals("Hellu H", mTextView.getText().toString());
- }
-
- /**
- * Check point when Capitalize.CHARACTERS and autotext is false:
- * 1. press KEYCODE_H, text is "H".
- * 2. press KEYCODE_E, text is "HE".
- * 3. press KEYCODE_L, text is "HEL".
- * 4. press KEYCODE_L, text is "HELL".
- * 5. press KEYCODE_U, text is "HELLU".
- * 7. press KEYCODE_SPACE, text is "HELLU "
- * 8. press KEYCODE_H, text is "HELLU H"
- */
- @TestTargetNew(
- level = TestLevel.COMPLETE,
- method = "onKeyDown",
- args = {View.class, Editable.class, int.class, KeyEvent.class}
- )
- public void testPressKey5() {
- final QwertyKeyListener qwertyKeyListener
- = QwertyKeyListener.getInstance(false, Capitalize.CHARACTERS);
-
- mActivity.runOnUiThread(new Runnable() {
- public void run() {
- mTextView.setText("", BufferType.EDITABLE);
- mTextView.requestFocus();
- Selection.setSelection((Editable) mTextView.getText(), 0, 0);
- mTextView.setKeyListener(qwertyKeyListener);
- }
- });
- mInstrumentation.waitForIdleSync();
- assertEquals("", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_H);
- assertEquals("H", mTextView.getText().toString());
-
- sendKeys(KeyEvent.KEYCODE_E);
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_E);
assertEquals("HE", mTextView.getText().toString());
- sendKeys(KeyEvent.KEYCODE_L);
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_L);
assertEquals("HEL", mTextView.getText().toString());
- sendKeys(KeyEvent.KEYCODE_L);
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_L);
assertEquals("HELL", mTextView.getText().toString());
- sendKeys(KeyEvent.KEYCODE_U);
- assertEquals("HELLU", mTextView.getText().toString());
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_O);
+ assertEquals("HELLO", mTextView.getText().toString());
+ }
- sendKeys(KeyEvent.KEYCODE_SPACE);
- assertEquals("HELLU ", mTextView.getText().toString());
+ public void testOnKeyDown_capitalizeSentences() {
+ QwertyKeyListener keyListener = QwertyKeyListener.getInstance(false,
+ Capitalize.SENTENCES);
- sendKeys(KeyEvent.KEYCODE_H);
- assertEquals("HELLU H", mTextView.getText().toString());
+ prepareEmptyTextView();
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_H);
+ assertEquals("H", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_I);
+ assertEquals("Hi", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_PERIOD);
+ assertEquals("Hi.", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_SPACE);
+ assertEquals("Hi. ", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_B);
+ assertEquals("Hi. B", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_Y);
+ assertEquals("Hi. By", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_E);
+ assertEquals("Hi. Bye", mTextView.getText().toString());
+ }
+
+ public void testOnKeyDown_capitalizeWords() {
+ QwertyKeyListener keyListener = QwertyKeyListener.getInstance(false,
+ Capitalize.WORDS);
+
+ prepareEmptyTextView();
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_H);
+ assertEquals("H", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_I);
+ assertEquals("Hi", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_SPACE);
+ assertEquals("Hi ", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_B);
+ assertEquals("Hi B", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_Y);
+ assertEquals("Hi By", mTextView.getText().toString());
+
+ callOnKeyDown(keyListener, KeyEvent.KEYCODE_E);
+ assertEquals("Hi Bye", mTextView.getText().toString());
+ }
+
+ private void prepareEmptyTextView() {
+ mActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ mTextView.setText("", BufferType.EDITABLE);
+ Selection.setSelection(mTextView.getEditableText(), 0, 0);
+ }
+ });
+ mInstrumentation.waitForIdleSync();
+ assertEquals("", mTextView.getText().toString());
+ }
+
+ private void callOnKeyDown(final QwertyKeyListener keyListener, final int keyCode) {
+ mActivity.runOnUiThread(new Runnable() {
+ public void run() {
+ keyListener.onKeyDown(mTextView, mTextView.getEditableText(), keyCode,
+ new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
+ }
+ });
+ mInstrumentation.waitForIdleSync();
}
@TestTargetNew(