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

Commit b8782d39 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add parceling test to DocumentStack." into nyc-andromeda-dev

parents 8e6eaf7a c6b04329
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -17,26 +17,28 @@
package com.android.documentsui.testing;

import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertTrue;

import android.os.Parcel;
import android.os.Parcelable;

import java.util.Comparator;
import java.util.function.BiPredicate;

public class Parcelables {

    private Parcelables() {}

    public static <T extends Parcelable> void testParceling(T p, int flags) {
    public static <T extends Parcelable> void assertParcelable(T p, int flags) {
        final T restored = parcel(p, flags);

        assertEquals(p, restored);
    }

    public static <T extends Parcelable> void testParceling(T p, int flags, Comparator<T> comp) {
    public static <T extends Parcelable> void assertParcelable(
            T p, int flags, BiPredicate<T, T> pred) {
        T restored = parcel(p, flags);

        assertEquals(0, comp.compare(p, restored));
        assertTrue(pred.test(p, restored));
    }

    private static <T extends Parcelable> T parcel(T p, int flags) {
+38 −7
Original line number Diff line number Diff line
@@ -21,14 +21,18 @@ import static junit.framework.Assert.assertFalse;
import static junit.framework.TestCase.assertNull;
import static junit.framework.TestCase.assertTrue;

import android.net.Uri;
import android.provider.DocumentsContract;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;

import com.android.documentsui.testing.Parcelables;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.Objects;

@RunWith(AndroidJUnit4.class)
@SmallTest
public class DocumentStackTest {
@@ -46,12 +50,18 @@ public class DocumentStackTest {
        ROOT_2 = new RootInfo();
        ROOT_2.rootId = "downloads";

        DIR_1 = new DocumentInfo();
        DIR_1.derivedUri = Uri.parse("content://authority/document/firstId");
        DIR_1.displayName = "firstDirectory";
        DIR_2 = new DocumentInfo();
        DIR_2.derivedUri = Uri.parse("content://authority/document/secondId");
        DIR_2.displayName = "secondDirectory";
        DIR_1 = createDir("first");
        DIR_2 = createDir("second");
    }

    private static DocumentInfo createDir(String docId) {
        DocumentInfo info = new DocumentInfo();
        info.authority = "authority";
        info.documentId = docId;
        info.displayName = docId;
        info.mimeType = DocumentsContract.Document.MIME_TYPE_DIR;
        info.deriveFields();
        return info;
    }

    @Before
@@ -173,4 +183,25 @@ public class DocumentStackTest {

        assertTrue(mStack.hasInitialLocationChanged());
    }

    @Test
    public void testParceling() {
        mStack.changeRoot(ROOT_1);
        mStack.push(DIR_1);
        mStack.push(DIR_2);

        Parcelables.assertParcelable(mStack, 0, (DocumentStack left, DocumentStack right) -> {
            if (!Objects.equals(left.getRoot(), right.getRoot()) || left.size() != right.size()) {
                return false;
            }

            for (int i = 0; i < left.size(); ++i) {
                if (!Objects.equals(left.get(i), right.get(i))) {
                    return false;
                }
            }

            return true;
        });
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -84,6 +84,6 @@ public class SortDimensionTest {
    }
    @Test
    public void testParceling() {
        Parcelables.testParceling(mDimension, 0);
        Parcelables.assertParcelable(mDimension, 0);
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -211,12 +211,12 @@ public class SortModelTest {
        mModel.sortByUser(DIMENSION_2.getId(), SortDimension.SORT_DIRECTION_DESCENDING);
        mModel.setDimensionVisibility(DIMENSION_3.getId(), View.GONE);

        Parcelables.testParceling(mModel, 0);
        Parcelables.assertParcelable(mModel, 0);
    }

    @Test
    public void testParceling_NoSortedDimension() {
        Parcelables.testParceling(mModel, 0);
        Parcelables.assertParcelable(mModel, 0);
    }

    private @Nullable SortDimension getSortedDimension() {