Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a483b18f authored by Phil Weaver's avatar Phil Weaver Committed by android-build-merger
Browse files

Merge "Move cts tests using reflection" into pi-dev

am: fd533c75

Change-Id: Ib6cb9a5e24e1faa93d66ae0511e281510fb70b57
parents 976affea fd533c75
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -26,11 +26,29 @@ import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

/**
 * AccessibilityEvent is public, so CTS covers it pretty well. Verifying hidden methods here.
 */
@RunWith(AndroidJUnit4.class)
public class AccessibilityEventTest {
    // The number of fields tested in the corresponding CTS AccessibilityEventTest:
    // See the CTS tests for AccessibilityRecord:
    // fullyPopulateAccessibilityEvent, assertEqualsAccessiblityEvent,
    // and assertAccessibilityEventCleared

    /** The number of properties of the {@link AccessibilityEvent} class. */
    private static final int A11Y_EVENT_NON_STATIC_FIELD_COUNT = 32;

    // The number of fields tested in the corresponding CTS AccessibilityRecordTest:
    // assertAccessibilityRecordCleared, fullyPopulateAccessibilityRecord,
    // and assertEqualAccessibilityRecord

    /** The number of properties of the {@link AccessibilityRecord} class. */
    private static final int A11Y_RECORD_NON_STATIC_FIELD_COUNT = 24;

    @Test
    public void testImportantForAccessibiity_getSetWorkAcrossParceling() {
        AccessibilityEvent event = AccessibilityEvent.obtain();
@@ -59,10 +77,42 @@ public class AccessibilityEventTest {
        assertEquals(windowChanges, copyEventViaParcel(event).getWindowChanges());
    }

    @Test
    public void dontForgetToUpdateA11yRecordCtsParcelingTestWhenYouAddNewFields() {
        AccessibilityEventTest.assertNoNewNonStaticFieldsAdded(
                AccessibilityRecord.class, A11Y_RECORD_NON_STATIC_FIELD_COUNT);
    }

    @Test
    public void dontForgetToUpdateA11yEventCtsParcelingTestWhenYouAddNewFields() {
        AccessibilityEventTest.assertNoNewNonStaticFieldsAdded(
                AccessibilityEvent.class, A11Y_EVENT_NON_STATIC_FIELD_COUNT);
    }

    private AccessibilityEvent copyEventViaParcel(AccessibilityEvent event) {
        Parcel parcel = Parcel.obtain();
        event.writeToParcel(parcel, 0);
        parcel.setDataPosition(0);
        return AccessibilityEvent.CREATOR.createFromParcel(parcel);
    }

    /**
     * Asserts that no new fields have been added, so we are testing marshaling
     * of all such.
     */
    static void assertNoNewNonStaticFieldsAdded(Class<?> clazz, int expectedCount) {
        int nonStaticFieldCount = 0;

        while (clazz != Object.class) {
            for (Field field : clazz.getDeclaredFields()) {
                if ((field.getModifiers() & Modifier.STATIC) == 0) {
                    nonStaticFieldCount++;
                }
            }
            clazz = clazz.getSuperclass();
        }

        String message = "New fields have been added, so add code to test marshaling them.";
        assertEquals(message, expectedCount, nonStaticFieldCount);
    }
}
+16 −0
Original line number Diff line number Diff line
@@ -38,6 +38,16 @@ import java.util.ArrayList;
@LargeTest
@RunWith(AndroidJUnit4.class)
public class AccessibilityNodeInfoTest {
    // The number of fields tested in the corresponding CTS AccessibilityNodeInfoTest:
    // See fullyPopulateAccessibilityNodeInfo, assertEqualsAccessibilityNodeInfo,
    // and assertAccessibilityNodeInfoCleared in that class.
    private static final int NUM_MARSHALLED_PROPERTIES = 35;

    /**
     * The number of properties that are purposely not marshalled
     * mOriginalText - Used when resolving clickable spans; intentionally not parceled
     */
    private static final int NUM_NONMARSHALLED_PROPERTIES = 1;

    @Test
    public void testStandardActions_serializationFlagIsValid() {
@@ -114,4 +124,10 @@ public class AccessibilityNodeInfoTest {
        assertThat(unparceledNode.getActionList(), emptyCollectionOf(AccessibilityAction.class));
        assertThat(unparceledNode.getText(), equalTo(text));
    }

    @Test
    public void dontForgetToUpdateCtsParcelingTestWhenYouAddNewFields() {
        AccessibilityEventTest.assertNoNewNonStaticFieldsAdded(AccessibilityNodeInfo.class,
                NUM_MARSHALLED_PROPERTIES + NUM_NONMARSHALLED_PROPERTIES);
    }
}