gecko/mobile/android/base/tests/testInputConnection.java

90 lines
4.0 KiB
Java
Raw Normal View History

package org.mozilla.gecko.tests;
import static org.mozilla.gecko.tests.helpers.AssertionHelper.fAssertEquals;
import static org.mozilla.gecko.tests.helpers.TextInputHelper.assertSelection;
import static org.mozilla.gecko.tests.helpers.TextInputHelper.assertSelectionAt;
import static org.mozilla.gecko.tests.helpers.TextInputHelper.assertText;
import static org.mozilla.gecko.tests.helpers.TextInputHelper.assertTextAndSelection;
import static org.mozilla.gecko.tests.helpers.TextInputHelper.assertTextAndSelectionAt;
import org.mozilla.gecko.tests.components.GeckoViewComponent.InputConnectionTest;
import org.mozilla.gecko.tests.helpers.GeckoHelper;
import org.mozilla.gecko.tests.helpers.NavigationHelper;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputConnection;
/**
* Tests the proper operation of GeckoInputConnection
*/
public class testInputConnection extends UITest {
private static final String INITIAL_TEXT = "foo";
public void testInputConnection() throws InterruptedException {
GeckoHelper.blockForReady();
NavigationHelper.enterAndLoadUrl(StringHelper.ROBOCOP_INPUT_URL + "#" + INITIAL_TEXT);
mToolbar.assertTitle(StringHelper.ROBOCOP_INPUT_TITLE);
mGeckoView.mTextInput
.waitForInputConnection()
.testInputConnection(new BasicInputConnectionTest());
}
private class BasicInputConnectionTest implements InputConnectionTest {
@Override
public void test(InputConnection ic, EditorInfo info) {
// Test initial text provided by the hash in the test page URL
assertText("Initial text matches URL hash", ic, INITIAL_TEXT);
// Test setSelection
ic.setSelection(0, 3);
assertSelection("Can set selection to range", ic, 0, 3);
ic.setSelection(-3, 6);
// Test both forms of assert
assertTextAndSelection("Can handle invalid range", ic, INITIAL_TEXT, 0, 3);
ic.setSelection(3, 3);
assertSelectionAt("Can collapse selection", ic, 3);
ic.setSelection(4, 4);
assertTextAndSelectionAt("Can handle invalid cursor", ic, INITIAL_TEXT, 3);
// Test commitText
ic.commitText("", 10); // Selection past end of new text
assertTextAndSelectionAt("Can commit empty text", ic, "foo", 3);
ic.commitText("bar", 1); // Selection at end of new text
assertTextAndSelectionAt("Can commit text (select after)", ic, "foobar", 6);
ic.commitText("foo", -1); // Selection at start of new text
assertTextAndSelectionAt("Can commit text (select before)", ic, "foobarfoo", 5);
// Test deleteSurroundingText
ic.deleteSurroundingText(1, 0);
assertTextAndSelectionAt("Can delete text before", ic, "foobrfoo", 4);
ic.deleteSurroundingText(1, 1);
assertTextAndSelectionAt("Can delete text before/after", ic, "foofoo", 3);
ic.deleteSurroundingText(0, 10);
assertTextAndSelectionAt("Can delete text after", ic, "foo", 3);
ic.deleteSurroundingText(0, 0);
assertTextAndSelectionAt("Can delete empty text", ic, "foo", 3);
// Test setComposingText
ic.setComposingText("foo", 1);
assertTextAndSelectionAt("Can start composition", ic, "foofoo", 6);
ic.setComposingText("", 1);
assertTextAndSelectionAt("Can set empty composition", ic, "foo", 3);
ic.setComposingText("bar", 1);
assertTextAndSelectionAt("Can update composition", ic, "foobar", 6);
// Test finishComposingText
ic.finishComposingText();
assertTextAndSelectionAt("Can finish composition", ic, "foobar", 6);
// Test getTextBeforeCursor
fAssertEquals("Can retrieve text before cursor", "bar", ic.getTextBeforeCursor(3, 0));
// Test getTextAfterCursor
fAssertEquals("Can retrieve text after cursor", "", ic.getTextAfterCursor(3, 0));
}
}
}