OSDN Git Service

original
[gb-231r1-is01/GB_2.3_IS01.git] / cts / tests / tests / accessibilityservice / src / android / accessibilityservice / cts / AccessibilityServiceInfoTest.java
diff --git a/cts/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityServiceInfoTest.java b/cts/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityServiceInfoTest.java
new file mode 100644 (file)
index 0000000..48b4aae
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2010 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.accessibilityservice.cts;
+
+import android.accessibilityservice.AccessibilityServiceInfo;
+import android.os.Parcel;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.view.accessibility.AccessibilityEvent;
+
+import junit.framework.TestCase;
+
+/**
+ * Class for testing {@link AccessibilityServiceInfo}.
+ */
+public class AccessibilityServiceInfoTest extends TestCase {
+
+    @SmallTest
+    public void testMarshalling() throws Exception {
+
+        // fully populate the service info to marshal
+        AccessibilityServiceInfo sentInfo = new AccessibilityServiceInfo();
+        fullyPopulateSentAccessibilityServiceInfo(sentInfo);
+
+        // marshal and unmarshal the service info
+        Parcel parcel = Parcel.obtain();
+        sentInfo.writeToParcel(parcel, 0);
+        parcel.setDataPosition(0);
+        AccessibilityServiceInfo receivedInfo = AccessibilityServiceInfo.CREATOR
+                .createFromParcel(parcel);
+
+        // make sure all fields properly marshaled
+        assertAllFieldsProperlyMarshalled(sentInfo, receivedInfo);
+    }
+
+    /**
+     * Fully populates the {@link AccessibilityServiceInfo} to marshal.
+     *
+     * @param sentInfo The service info to populate.
+     */
+    private void fullyPopulateSentAccessibilityServiceInfo(AccessibilityServiceInfo sentInfo) {
+        sentInfo.eventTypes = AccessibilityEvent.TYPE_VIEW_CLICKED;
+        sentInfo.feedbackType = AccessibilityServiceInfo.FEEDBACK_SPOKEN;
+        sentInfo.flags = AccessibilityServiceInfo.DEFAULT;
+        sentInfo.notificationTimeout = 1000;
+        sentInfo.packageNames = new String[] {
+            "foo.bar.baz"
+        };
+    }
+
+    /**
+     * Compares all properties of the <code>sentInfo</code> and the
+     * <code>receviedInfo</code> to make sure marshalling is correctly
+     * implemented.
+     */
+    private void assertAllFieldsProperlyMarshalled(AccessibilityServiceInfo sentInfo,
+            AccessibilityServiceInfo receivedInfo) {
+        assertEquals("eventTypes not marshalled properly", sentInfo.eventTypes,
+                receivedInfo.eventTypes);
+        assertEquals("feedbackType not marshalled properly", sentInfo.feedbackType,
+                receivedInfo.feedbackType);
+        // This will fail here and is fixed in Froyo. Bug 2448479.
+        // assertEquals("flags not marshalled properly", sentInfo.flags, receivedInfo.flags);
+        assertEquals("notificationTimeout not marshalled properly", sentInfo.notificationTimeout,
+                receivedInfo.notificationTimeout);
+        assertEquals("packageNames not marshalled properly", sentInfo.packageNames.length,
+                receivedInfo.packageNames.length);
+        assertEquals("packageNames not marshalled properly", sentInfo.packageNames[0],
+                receivedInfo.packageNames[0]);
+    }
+}