OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / tests / tests / view / src / android / view / inputmethod / cts / InputConnectionWrapperTest.java
diff --git a/cts/tests/tests/view/src/android/view/inputmethod/cts/InputConnectionWrapperTest.java b/cts/tests/tests/view/src/android/view/inputmethod/cts/InputConnectionWrapperTest.java
new file mode 100644 (file)
index 0000000..bdee05a
--- /dev/null
@@ -0,0 +1,325 @@
+/*
+ * Copyright (C) 2009 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 android.view.inputmethod.cts;
+
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+
+import android.os.Bundle;
+import android.test.AndroidTestCase;
+import android.text.TextUtils;
+import android.view.KeyEvent;
+import android.view.inputmethod.CompletionInfo;
+import android.view.inputmethod.EditorInfo;
+import android.view.inputmethod.ExtractedText;
+import android.view.inputmethod.ExtractedTextRequest;
+import android.view.inputmethod.InputConnection;
+import android.view.inputmethod.InputConnectionWrapper;
+
+@TestTargetClass(InputConnectionWrapper.class)
+public class InputConnectionWrapperTest extends AndroidTestCase {
+
+    @TestTargets({
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "InputConnectionWrapper",
+            args = {InputConnection.class, boolean.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "setTarget",
+            args = {InputConnection.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "beginBatchEdit",
+            args = {}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "commitCompletion",
+            args = {CompletionInfo.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "endBatchEdit",
+            args = {}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "getExtractedText",
+            args = {ExtractedTextRequest.class, int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "performContextMenuAction",
+            args = {int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "performEditorAction",
+            args = {int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "performPrivateCommand",
+            args = {String.class, Bundle.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "setSelection",
+            args = {int.class, int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "getTextAfterCursor",
+            args = {int.class, int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "getTextBeforeCursor",
+            args = {int.class, int.class}
+        ),
+        @TestTargetNew(
+                level = TestLevel.COMPLETE,
+                method = "getSelectedText",
+                args = {int.class}
+            ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "getCursorCapsMode",
+            args = {int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "clearMetaKeyStates",
+            args = {int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "commitText",
+            args = {CharSequence.class, int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "deleteSurroundingText",
+            args = {int.class, int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "finishComposingText",
+            args = {}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "setComposingText",
+            args = {CharSequence.class, int.class}
+        ),
+        @TestTargetNew(
+                level = TestLevel.COMPLETE,
+                method = "setComposingRegion",
+                args = {int.class, int.class}
+            ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "sendKeyEvent",
+            args = {KeyEvent.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "reportFullscreenMode",
+            args = {boolean.class}
+        )
+    })
+    public void testInputConnectionWrapper() {
+        MockInputConnection inputConnection = new MockInputConnection();
+        InputConnectionWrapper wrapper = new InputConnectionWrapper(null, true);
+        try {
+            wrapper.beginBatchEdit();
+            fail("Failed to throw NullPointerException!");
+        } catch (NullPointerException e) {
+            // expected
+        }
+        wrapper.setTarget(inputConnection);
+
+        wrapper.beginBatchEdit();
+        assertTrue(inputConnection.isBeginBatchEditCalled);
+        wrapper.clearMetaKeyStates(KeyEvent.META_ALT_ON);
+        assertTrue(inputConnection.isClearMetaKeyStatesCalled);
+        wrapper.commitCompletion(new CompletionInfo(1, 1, "testText"));
+        assertTrue(inputConnection.isCommitCompletionCalled);
+        wrapper.commitText("Text", 1);
+        assertTrue(inputConnection.isCommitTextCalled);
+        wrapper.deleteSurroundingText(10, 100);
+        assertTrue(inputConnection.isDeleteSurroundingTextCalled);
+        wrapper.endBatchEdit();
+        assertTrue(inputConnection.isEndBatchEditCalled);
+        wrapper.finishComposingText();
+        assertTrue(inputConnection.isFinishComposingTextCalled);
+        wrapper.getCursorCapsMode(TextUtils.CAP_MODE_CHARACTERS);
+        assertTrue(inputConnection.isGetCursorCapsModeCalled);
+        wrapper.getExtractedText(new ExtractedTextRequest(), 0);
+        assertTrue(inputConnection.isGetExtractedTextCalled);
+        wrapper.getTextAfterCursor(5, 0);
+        assertTrue(inputConnection.isGetTextAfterCursorCalled);
+        wrapper.getTextBeforeCursor(3, 0);
+        assertTrue(inputConnection.isGetTextBeforeCursorCalled);
+        wrapper.performContextMenuAction(1);
+        assertTrue(inputConnection.isPerformContextMenuActionCalled);
+        wrapper.performEditorAction(EditorInfo.IME_ACTION_GO);
+        assertTrue(inputConnection.isPerformEditorActionCalled);
+        wrapper.performPrivateCommand("com.android.action.MAIN", new Bundle());
+        assertTrue(inputConnection.isPerformPrivateCommandCalled);
+        wrapper.reportFullscreenMode(true);
+        assertTrue(inputConnection.isReportFullscreenModeCalled);
+        wrapper.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_0));
+        assertTrue(inputConnection.isSendKeyEventCalled);
+        wrapper.setComposingText("Text", 1);
+        assertTrue(inputConnection.isSetComposingTextCalled);
+        wrapper.setSelection(0, 10);
+        assertTrue(inputConnection.isSetSelectionCalled);
+        wrapper.getSelectedText(0);
+        assertTrue(inputConnection.isGetSelectedTextCalled);
+        wrapper.setComposingRegion(0, 3);
+        assertTrue(inputConnection.isSetComposingRegionCalled);
+    }
+
+    private class MockInputConnection implements InputConnection {
+        public boolean isBeginBatchEditCalled;
+        public boolean isClearMetaKeyStatesCalled;
+        public boolean isCommitCompletionCalled;
+        public boolean isCommitTextCalled;
+        public boolean isDeleteSurroundingTextCalled;
+        public boolean isEndBatchEditCalled;
+        public boolean isFinishComposingTextCalled;
+        public boolean isGetCursorCapsModeCalled;
+        public boolean isGetExtractedTextCalled;
+        public boolean isGetTextAfterCursorCalled;
+        public boolean isGetTextBeforeCursorCalled;
+        public boolean isGetSelectedTextCalled;
+        public boolean isPerformContextMenuActionCalled;
+        public boolean isPerformEditorActionCalled;
+        public boolean isPerformPrivateCommandCalled;
+        public boolean isReportFullscreenModeCalled;
+        public boolean isSendKeyEventCalled;
+        public boolean isSetComposingTextCalled;
+        public boolean isSetComposingRegionCalled;
+        public boolean isSetSelectionCalled;
+
+        public boolean beginBatchEdit() {
+            isBeginBatchEditCalled = true;
+            return false;
+        }
+
+        public boolean clearMetaKeyStates(int states) {
+            isClearMetaKeyStatesCalled = true;
+            return false;
+        }
+
+        public boolean commitCompletion(CompletionInfo text) {
+            isCommitCompletionCalled = true;
+            return false;
+        }
+
+        public boolean commitText(CharSequence text, int newCursorPosition) {
+            isCommitTextCalled = true;
+            return false;
+        }
+
+        public boolean deleteSurroundingText(int leftLength, int rightLength) {
+            isDeleteSurroundingTextCalled = true;
+            return false;
+        }
+
+        public boolean endBatchEdit() {
+            isEndBatchEditCalled = true;
+            return false;
+        }
+
+        public boolean finishComposingText() {
+            isFinishComposingTextCalled = true;
+            return false;
+        }
+
+        public int getCursorCapsMode(int reqModes) {
+            isGetCursorCapsModeCalled = true;
+            return 0;
+        }
+
+        public ExtractedText getExtractedText(ExtractedTextRequest request, int flags) {
+            isGetExtractedTextCalled = true;
+            return null;
+        }
+
+        public CharSequence getTextAfterCursor(int n, int flags) {
+            isGetTextAfterCursorCalled = true;
+            return null;
+        }
+
+        public CharSequence getTextBeforeCursor(int n, int flags) {
+            isGetTextBeforeCursorCalled = true;
+            return null;
+        }
+
+        public CharSequence getSelectedText(int flags) {
+            isGetSelectedTextCalled = true;
+            return null;
+        }
+
+        public boolean performContextMenuAction(int id) {
+            isPerformContextMenuActionCalled = true;
+            return false;
+        }
+
+        public boolean performEditorAction(int editorAction) {
+            isPerformEditorActionCalled = true;
+            return false;
+        }
+
+        public boolean performPrivateCommand(String action, Bundle data) {
+            isPerformPrivateCommandCalled = true;
+            return false;
+        }
+
+        public boolean reportFullscreenMode(boolean enabled) {
+            isReportFullscreenModeCalled = true;
+            return false;
+        }
+
+        public boolean sendKeyEvent(KeyEvent event) {
+            isSendKeyEventCalled = true;
+            return false;
+        }
+
+        public boolean setComposingText(CharSequence text, int newCursorPosition) {
+            isSetComposingTextCalled = true;
+            return false;
+        }
+
+        public boolean setComposingRegion(int start, int end) {
+            isSetComposingRegionCalled = true;
+            return false;
+        }
+
+        public boolean setSelection(int start, int end) {
+            isSetSelectionCalled = true;
+            return false;
+        }
+    }
+}