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

Commit a4a28f1f authored by Ben Kwa's avatar Ben Kwa Committed by Android (Google) Code Review
Browse files

Merge "Consolidate unit tests."

parents 12a2ab4c 272c0204
Loading
Loading
Loading
Loading
+22 −8
Original line number Diff line number Diff line
@@ -820,9 +820,9 @@ public class DirectoryFragment extends Fragment {
                                    mModel.undoDeletion();
                                } else {
                                    mModel.finalizeDeletion(
                                            new Runnable() {
                                            new Model.DeletionListener() {
                                                @Override
                                                public void run() {
                                                public void onError() {
                                                    Shared.makeSnackbar(
                                                            activity,
                                                            R.string.toast_failed_delete,
@@ -1865,9 +1865,9 @@ public class DirectoryFragment extends Fragment {
         * @param view The view which will be used to interact with the user (e.g. surfacing
         * snackbars) for errors, info, etc.
         */
        void finalizeDeletion(Runnable errorCallback) {
        void finalizeDeletion(DeletionListener listener) {
            final ContentResolver resolver = mContext.getContentResolver();
            DeleteFilesTask task = new DeleteFilesTask(resolver, errorCallback);
            DeleteFilesTask task = new DeleteFilesTask(resolver, listener);
            task.execute();
        }

@@ -1877,16 +1877,16 @@ public class DirectoryFragment extends Fragment {
         */
        private class DeleteFilesTask extends AsyncTask<Void, Void, List<DocumentInfo>> {
            private ContentResolver mResolver;
            private Runnable mErrorCallback;
            private DeletionListener mListener;

            /**
             * @param resolver A ContentResolver for performing the actual file deletions.
             * @param errorCallback A Runnable that is executed in the event that one or more errors
             *     occured while copying files.  Execution will occur on the UI thread.
             */
            public DeleteFilesTask(ContentResolver resolver, Runnable errorCallback) {
            public DeleteFilesTask(ContentResolver resolver, DeletionListener listener) {
                mResolver = resolver;
                mErrorCallback = errorCallback;
                mListener = listener;
            }

            @Override
@@ -1920,13 +1920,27 @@ public class DirectoryFragment extends Fragment {

                if (hadTrouble) {
                    // TODO show which files failed? b/23720103
                    mErrorCallback.run();
                    mListener.onError();
                    if (DEBUG) Log.d(TAG, "Deletion task completed.  Some deletions failed.");
                } else {
                    if (DEBUG) Log.d(TAG, "Deletion task completed successfully.");
                }
                mMarkedForDeletion.clear();

                mListener.onCompletion();
            }
        }

        static class DeletionListener {
            /**
             * Called when deletion has completed (regardless of whether an error occurred).
             */
            void onCompletion() {}

            /**
             * Called at the end of a deletion operation that produced one or more errors.
             */
            void onError() {}
        }

        void addUpdateListener(UpdateListener listener) {
+28 −9
Original line number Diff line number Diff line
@@ -34,6 +34,9 @@ import com.android.documentsui.MultiSelectManager.Selection;
import com.android.documentsui.model.DocumentInfo;

import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;



public class DirectoryFragmentModelTest extends AndroidTestCase {
@@ -77,14 +80,6 @@ public class DirectoryFragmentModelTest extends AndroidTestCase {
        delete(2, 4);

        assertEquals(ITEM_COUNT - 2, model.getItemCount());

        // Finalize the deletion.  Provide a callback that just ignores errors.
        model.finalizeDeletion(
              new Runnable() {
                  @Override
                  public void run() {}
              });
        assertEquals(ITEM_COUNT - 2, model.getItemCount());
    }

    // Tests that the item count is correct after a deletion is undone.
@@ -95,7 +90,6 @@ public class DirectoryFragmentModelTest extends AndroidTestCase {
        // Undo the deletion
        model.undoDeletion();
        assertEquals(ITEM_COUNT, model.getItemCount());

    }

    // Tests that the right things are marked for deletion.
@@ -125,6 +119,15 @@ public class DirectoryFragmentModelTest extends AndroidTestCase {
        assertEquals("0", docs.get(0).documentId);
        assertEquals("1", docs.get(1).documentId);
        assertEquals("4", docs.get(2).documentId);

        TestDeletionListener testListener = new TestDeletionListener();
        model.finalizeDeletion(testListener);
        testListener.waitForDone();

        docs = getDocumentInfo(0, 1, 2);
        assertEquals("0", docs.get(0).documentId);
        assertEquals("1", docs.get(1).documentId);
        assertEquals("2", docs.get(2).documentId);
    }

    // Tests that Model.getItem returns the right items after a deletion is undone.
@@ -176,4 +179,20 @@ public class DirectoryFragmentModelTest extends AndroidTestCase {
            return null;
        }
    }

    private static class TestDeletionListener extends Model.DeletionListener {
        final CountDownLatch mSignal = new CountDownLatch(1);

        @Override
        public void onCompletion() {
            mSignal.countDown();
        }

        public void waitForDone() {
            try {
                boolean timeout = mSignal.await(10, TimeUnit.SECONDS);
                assertTrue("Timed out waiting for deletion completion", timeout);
            } catch (InterruptedException e) {}
        }
    }
}
+34 −43
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import android.support.v7.widget.RecyclerView;
import android.test.AndroidTestCase;
import android.util.SparseBooleanArray;
import android.view.MotionEvent;
import android.view.View;
@@ -27,8 +28,6 @@ import android.view.ViewGroup;

import com.android.documentsui.MultiSelectManager.Selection;

import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;

import java.util.ArrayList;
@@ -36,7 +35,7 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class MultiSelectManagerTest {
public class MultiSelectManagerTest extends AndroidTestCase {

    private static final List<String> items;
    static {
@@ -54,7 +53,6 @@ public class MultiSelectManagerTest {
    private TestCallback mCallback;
    private EventHelper mEventHelper;

    @Before
    public void setUp() throws Exception {
        mAdapter = new TestAdapter(items);
        mCallback = new TestCallback();
@@ -63,65 +61,61 @@ public class MultiSelectManagerTest {
        mManager.addCallback(mCallback);
    }

    @Test
    public void mouseClick_StartsSelectionMode() {
    public void testMouseClick_StartsSelectionMode() {
        click(7);
        assertSelection(7);
    }

    @Test
    public void mouseClick_ShiftClickExtendsSelection() {
    public void testMouseClick_NotifiesSelectionChanged() {
        click(7);
        mCallback.assertSelectionChanged();
    }

    public void testMouseClick_ShiftClickExtendsSelection() {
        longPress(7);
        shiftClick(11);
        assertRangeSelection(7, 11);
    }

    @Test
    public void mouseClick_NoPosition_ClearsSelection() {
    public void testMouseClick_NoPosition_ClearsSelection() {
        longPress(7);
        click(11);
        click(RecyclerView.NO_POSITION);
        assertSelection();
    }

    @Test
    public void setSelectionFocusBegin() {
    public void testSetSelectionFocusBegin() {
        mManager.setItemSelected(7, true);
        mManager.setSelectionFocusBegin(7);
        shiftClick(11);
        assertRangeSelection(7, 11);
    }

    @Test
    public void longPress_StartsSelectionMode() {
    public void testLongPress_StartsSelectionMode() {
        longPress(7);
        assertSelection(7);
    }

    @Test
    public void longPress_SecondPressExtendsSelection() {
    public void testLongPress_SecondPressExtendsSelection() {
        longPress(7);
        longPress(99);
        assertSelection(7, 99);
    }

    @Test
    public void singleTapUp_UnselectsSelectedItem() {
    public void testSingleTapUp_UnselectsSelectedItem() {
        longPress(7);
        tap(7);
        assertSelection();
    }

    @Test
    public void singleTapUp_NoPosition_ClearsSelection() {
    public void testSingleTapUp_NoPosition_ClearsSelection() {
        longPress(7);
        tap(11);
        tap(RecyclerView.NO_POSITION);
        assertSelection();
    }

    @Test
    public void singleTapUp_ExtendsSelection() {
    public void testSingleTapUp_ExtendsSelection() {
        longPress(99);
        tap(7);
        tap(13);
@@ -129,30 +123,26 @@ public class MultiSelectManagerTest {
        assertSelection(7, 99, 13, 129899);
    }

    @Test
    public void singleTapUp_ShiftCreatesRangeSelection() {
    public void testSingleTapUp_ShiftCreatesRangeSelection() {
        longPress(7);
        shiftTap(17);
        assertRangeSelection(7, 17);
    }

    @Test
    public void singleTapUp_ShiftCreatesRangeSeletion_Backwards() {
    public void testSingleTapUp_ShiftCreatesRangeSeletion_Backwards() {
        longPress(17);
        shiftTap(7);
        assertRangeSelection(7, 17);
    }

    @Test
    public void singleTapUp_SecondShiftClickExtendsSelection() {
    public void testSingleTapUp_SecondShiftClickExtendsSelection() {
        longPress(7);
        shiftTap(11);
        shiftTap(17);
        assertRangeSelection(7, 17);
    }

    @Test
    public void singleTapUp_MultipleContiguousRangesSelected() {
    public void testSingleTapUp_MultipleContiguousRangesSelected() {
        longPress(7);
        shiftTap(11);
        tap(20);
@@ -162,16 +152,14 @@ public class MultiSelectManagerTest {
        assertSelectionSize(11);
    }

    @Test
    public void singleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick() {
    public void testSingleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick() {
        longPress(7);
        shiftTap(17);
        shiftTap(10);
        assertRangeSelection(7, 10);
    }

    @Test
    public void singleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick_Backwards() {
    public void testSingleTapUp_ShiftReducesSelectionRange_FromPreviousShiftClick_Backwards() {
        mManager.onLongPress(TestInputEvent.tap(17));
        shiftTap(7);
        shiftTap(14);
@@ -179,16 +167,14 @@ public class MultiSelectManagerTest {
    }


    @Test
    public void singleTapUp_ShiftReversesSelectionDirection() {
    public void testSingleTapUp_ShiftReversesSelectionDirection() {
        longPress(7);
        shiftTap(17);
        shiftTap(0);
        assertRangeSelection(0, 7);
    }

    @Test
    public void singleSelectMode() {
    public void testSingleSelectMode() {
        mManager = new MultiSelectManager(mAdapter, mEventHelper, MultiSelectManager.MODE_SINGLE);
        mManager.addCallback(mCallback);
        longPress(20);
@@ -196,8 +182,7 @@ public class MultiSelectManagerTest {
        assertSelection(13);
    }

    @Test
    public void singleSelectMode_ShiftTap() {
    public void testSingleSelectMode_ShiftTap() {
        mManager = new MultiSelectManager(mAdapter, mEventHelper, MultiSelectManager.MODE_SINGLE);
        mManager.addCallback(mCallback);
        longPress(13);
@@ -205,8 +190,7 @@ public class MultiSelectManagerTest {
        assertSelection(20);
    }

    @Test
    public void provisionaSelection() {
    public void testProvisionalSelection() {
        Selection s = mManager.getSelection();
        assertSelection();

@@ -298,6 +282,7 @@ public class MultiSelectManagerTest {
        Set<Integer> ignored = new HashSet<>();
        private int mLastChangedPosition;
        private boolean mLastChangedSelected;
        private boolean mSelectionChanged = false;

        @Override
        public void onItemStateChanged(int position, boolean selected) {
@@ -311,7 +296,13 @@ public class MultiSelectManagerTest {
        }

        @Override
        public void onSelectionChanged() {}
        public void onSelectionChanged() {
            mSelectionChanged = true;
        }

        void assertSelectionChanged() {
            assertTrue(mSelectionChanged);
        }
    }

    private static final class TestHolder extends RecyclerView.ViewHolder {
+3 −14
Original line number Diff line number Diff line
@@ -22,14 +22,12 @@ import static org.junit.Assert.assertTrue;
import android.graphics.Point;
import android.graphics.Rect;
import android.support.v7.widget.RecyclerView.OnScrollListener;
import android.test.AndroidTestCase;
import android.util.SparseBooleanArray;

import com.android.documentsui.MultiSelectManager.GridModel;

import org.junit.After;
import org.junit.Test;

public class MultiSelectManager_GridModelTest {
public class MultiSelectManager_GridModelTest extends AndroidTestCase {

    private static final int VIEW_PADDING_PX = 5;
    private static final int CHILD_VIEW_EDGE_PX = 100;
@@ -53,14 +51,13 @@ public class MultiSelectManager_GridModelTest {
                });
    }

    @After
    @Override
    public void tearDown() {
        model = null;
        helper = null;
        lastSelection = null;
    }

    @Test
    public void testSelectionLeftOfItems() {
        setUp(20, 5);
        model.startSelection(new Point(0, 10));
@@ -69,7 +66,6 @@ public class MultiSelectManager_GridModelTest {
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
    public void testSelectionRightOfItems() {
        setUp(20, 4);
        model.startSelection(new Point(viewWidth - 1, 10));
@@ -78,7 +74,6 @@ public class MultiSelectManager_GridModelTest {
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
    public void testSelectionAboveItems() {
        setUp(20, 4);
        model.startSelection(new Point(10, 0));
@@ -87,7 +82,6 @@ public class MultiSelectManager_GridModelTest {
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
    public void testSelectionBelowItems() {
        setUp(5, 4);
        model.startSelection(new Point(10, VIEWPORT_HEIGHT - 1));
@@ -96,7 +90,6 @@ public class MultiSelectManager_GridModelTest {
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
    public void testVerticalSelectionBetweenItems() {
        setUp(20, 4);
        model.startSelection(new Point(106, 0));
@@ -105,7 +98,6 @@ public class MultiSelectManager_GridModelTest {
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
    public void testHorizontalSelectionBetweenItems() {
        setUp(20, 4);
        model.startSelection(new Point(0, 105));
@@ -114,7 +106,6 @@ public class MultiSelectManager_GridModelTest {
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
    public void testGrowingAndShrinkingSelection() {
        setUp(20, 4);
        model.startSelection(new Point(0, 0));
@@ -145,7 +136,6 @@ public class MultiSelectManager_GridModelTest {
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
    public void testSelectionMovingAroundOrigin() {
        setUp(16, 4);
        model.startSelection(new Point(210, 210));
@@ -160,7 +150,6 @@ public class MultiSelectManager_GridModelTest {
        assertEquals(10, model.getPositionNearestOrigin());
    }

    @Test
    public void testScrollingBandSelect() {
        setUp(40, 4);
        model.startSelection(new Point(0, 0));
+20 −36
Original line number Diff line number Diff line
@@ -18,16 +18,16 @@ package com.android.documentsui;

import static org.junit.Assert.*;

import android.test.AndroidTestCase;

import com.android.documentsui.MultiSelectManager.Selection;

import org.junit.Before;
import org.junit.Test;

public class MultiSelectManager_SelectionTest {
public class MultiSelectManager_SelectionTest extends AndroidTestCase{

    private Selection selection;

    @Before
    @Override
    public void setUp() throws Exception {
        selection = new Selection();
        selection.add(3);
@@ -35,8 +35,7 @@ public class MultiSelectManager_SelectionTest {
        selection.add(9);
    }

    @Test
    public void add() {
    public void testAdd() {
        // We added in setUp.
        assertEquals(3, selection.size());
        assertContains(3);
@@ -44,29 +43,25 @@ public class MultiSelectManager_SelectionTest {
        assertContains(9);
    }

    @Test
    public void remove() {
    public void testRemove() {
        selection.remove(3);
        selection.remove(5);
        assertEquals(1, selection.size());
        assertContains(9);
    }

    @Test
    public void clear() {
    public void testClear() {
        selection.clear();
        assertEquals(0, selection.size());
    }

    @Test
    public void isEmpty() {
    public void testIsEmpty() {
        assertTrue(new Selection().isEmpty());
        selection.clear();
        assertTrue(selection.isEmpty());
    }

    @Test
    public void sizeAndGet() {
    public void testSizeAndGet() {
        Selection other = new Selection();
        for (int i = 0; i < selection.size(); i++) {
            other.add(selection.get(i));
@@ -74,13 +69,11 @@ public class MultiSelectManager_SelectionTest {
        assertEquals(selection.size(), other.size());
    }

    @Test
    public void equalsSelf() {
    public void testEqualsSelf() {
        assertEquals(selection, selection);
    }

    @Test
    public void equalsOther() {
    public void testEqualsOther() {
        Selection other = new Selection();
        other.add(3);
        other.add(5);
@@ -89,23 +82,20 @@ public class MultiSelectManager_SelectionTest {
        assertEquals(selection.hashCode(), other.hashCode());
    }

    @Test
    public void equalsCopy() {
    public void testEqualsCopy() {
        Selection other = new Selection();
        other.copyFrom(selection);
        assertEquals(selection, other);
        assertEquals(selection.hashCode(), other.hashCode());
    }

    @Test
    public void notEquals() {
    public void testNotEquals() {
        Selection other = new Selection();
        other.add(789);
        assertFalse(selection.equals(other));
    }

    @Test
    public void expandBefore() {
    public void testExpandBefore() {
        selection.expand(2, 10);
        assertEquals(3, selection.size());
        assertContains(13);
@@ -113,8 +103,7 @@ public class MultiSelectManager_SelectionTest {
        assertContains(19);
    }

    @Test
    public void expandAfter() {
    public void testExpandAfter() {
        selection.expand(10, 10);
        assertEquals(3, selection.size());
        assertContains(3);
@@ -122,8 +111,7 @@ public class MultiSelectManager_SelectionTest {
        assertContains(9);
    }

    @Test
    public void expandSplit() {
    public void testExpandSplit() {
        selection.expand(5, 10);
        assertEquals(3, selection.size());
        assertContains(3);
@@ -131,8 +119,7 @@ public class MultiSelectManager_SelectionTest {
        assertContains(19);
    }

    @Test
    public void expandEncompased() {
    public void testExpandEncompased() {
        selection.expand(2, 10);
        assertEquals(3, selection.size());
        assertContains(13);
@@ -140,8 +127,7 @@ public class MultiSelectManager_SelectionTest {
        assertContains(19);
    }

    @Test
    public void collapseBefore() {
    public void testCollapseBefore() {
        selection.collapse(0, 2);
        assertEquals(3, selection.size());
        assertContains(1);
@@ -149,8 +135,7 @@ public class MultiSelectManager_SelectionTest {
        assertContains(7);
    }

    @Test
    public void collapseAfter() {
    public void testCollapseAfter() {
        selection.collapse(10, 10);
        assertEquals(3, selection.size());
        assertContains(3);
@@ -158,8 +143,7 @@ public class MultiSelectManager_SelectionTest {
        assertContains(9);
    }

    @Test
    public void collapseAcross() {
    public void testCollapseAcross() {
        selection.collapse(0, 10);
        assertEquals(0, selection.size());
    }
Loading