--- /dev/null
+/*
+ * 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]);
+ }
+}