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

Commit c3ef0d64 authored by Steve McKay's avatar Steve McKay
Browse files

Don't start band select on empty grid.

Masks an issue in band controller resulting in index out of bounds exceptions.
Eliminate the need to cast helper when constructing BandController.
Improve naming of Band related classes for clarity of purpose.
Normalize some "helper" class method names.
Rename BandSelectModelTest to match existing convention for tests on inner classes.

Bug: 23905473
Change-Id: Iaf7604fb729cf563a04dc92d78b24e2fe4812abe
parent a698d636
Loading
Loading
Loading
Loading
+133 −144

File changed.

Preview size limit exceeded, changes collapsed.

+2 −2
Original line number Diff line number Diff line
@@ -285,10 +285,10 @@ public class MultiSelectManagerTest {
        assertEquals(selection.toString(), expected, selection.size());
    }

    private static final class EventHelper implements MultiSelectManager.MultiSelectHelper {
    private static final class EventHelper implements MultiSelectManager.ItemFinder {

        @Override
        public int findEventPosition(MotionEvent e) {
        public int findItemPosition(MotionEvent e) {
            throw new UnsupportedOperationException();
        }
    }
+60 −24
Original line number Diff line number Diff line
@@ -16,25 +16,26 @@

package com.android.documentsui;

import static org.junit.Assert.*;

import com.android.documentsui.MultiSelectManager.BandSelectModel;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import android.graphics.Point;
import android.graphics.Rect;
import android.support.v7.widget.RecyclerView.OnScrollListener;
import android.util.SparseBooleanArray;

import com.android.documentsui.MultiSelectManager.GridModel;

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

public class BandSelectModelTest {
public class MultiSelectManager_GridModelTest {

    private static final int VIEW_PADDING_PX = 5;
    private static final int CHILD_VIEW_EDGE_PX = 100;
    private static final int VIEWPORT_HEIGHT = 500;

    private static BandSelectModel model;
    private static GridModel model;
    private static TestHelper helper;
    private static SparseBooleanArray lastSelection;
    private static int viewWidth;
@@ -42,9 +43,9 @@ public class BandSelectModelTest {
    private static void setUp(int numChildren, int numColumns) {
        helper = new TestHelper(numChildren, numColumns);
        viewWidth = VIEW_PADDING_PX + numColumns * (VIEW_PADDING_PX + CHILD_VIEW_EDGE_PX);
        model = new BandSelectModel(helper);
        model.addOnSelectionChangedListener(new BandSelectModel.OnSelectionChangedListener() {

        model = new GridModel(helper);
        model.addOnSelectionChangedListener(
                new GridModel.OnSelectionChangedListener() {
                    @Override
                    public void onSelectionChanged(SparseBooleanArray updatedSelection) {
                        lastSelection = updatedSelection;
@@ -65,7 +66,7 @@ public class BandSelectModelTest {
        model.startSelection(new Point(0, 10));
        model.resizeSelection(new Point(1, 11));
        assertSelected(new int[0]);
        assertEquals(BandSelectModel.NOT_SET, model.getPositionNearestOrigin());
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
@@ -74,7 +75,7 @@ public class BandSelectModelTest {
        model.startSelection(new Point(viewWidth - 1, 10));
        model.resizeSelection(new Point(viewWidth - 2, 11));
        assertSelected(new int[0]);
        assertEquals(BandSelectModel.NOT_SET, model.getPositionNearestOrigin());
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
@@ -83,7 +84,7 @@ public class BandSelectModelTest {
        model.startSelection(new Point(10, 0));
        model.resizeSelection(new Point(11, 1));
        assertSelected(new int[0]);
        assertEquals(BandSelectModel.NOT_SET, model.getPositionNearestOrigin());
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
@@ -92,7 +93,7 @@ public class BandSelectModelTest {
        model.startSelection(new Point(10, VIEWPORT_HEIGHT - 1));
        model.resizeSelection(new Point(11, VIEWPORT_HEIGHT - 2));
        assertSelected(new int[0]);
        assertEquals(BandSelectModel.NOT_SET, model.getPositionNearestOrigin());
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
@@ -101,7 +102,7 @@ public class BandSelectModelTest {
        model.startSelection(new Point(106, 0));
        model.resizeSelection(new Point(107, 200));
        assertSelected(new int[0]);
        assertEquals(BandSelectModel.NOT_SET, model.getPositionNearestOrigin());
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
@@ -110,7 +111,7 @@ public class BandSelectModelTest {
        model.startSelection(new Point(0, 105));
        model.resizeSelection(new Point(200, 106));
        assertSelected(new int[0]);
        assertEquals(BandSelectModel.NOT_SET, model.getPositionNearestOrigin());
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
@@ -141,7 +142,7 @@ public class BandSelectModelTest {
        assertSelected(new int[] {0});
        model.resizeSelection(new Point(0, 0));
        assertSelected(new int[0]);
        assertEquals(BandSelectModel.NOT_SET, model.getPositionNearestOrigin());
        assertEquals(GridModel.NOT_SET, model.getPositionNearestOrigin());
    }

    @Test
@@ -191,7 +192,7 @@ public class BandSelectModelTest {
        model.onScrolled(null, 0, dy);
    }

    private static final class TestHelper implements MultiSelectManager.BandModelHelper {
    private static final class TestHelper implements MultiSelectManager.BandEnvironment {

        public int horizontalOffset = 0;
        public int verticalOffset = 0;
@@ -269,18 +270,53 @@ public class BandSelectModelTest {
        }

        @Override
        public int getTotalChildCount() {
        public int getChildCount() {
            return mNumChildren;
        }

        @Override
        public int getNumColumns() {
        public int getColumnCount() {
            return mNumColumns;
        }

        @Override
        public int getNumRows() {
        public int getRowCount() {
            return mNumRows;
        }

        @Override
        public void showBand(Rect rect) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void hideBand() {
            throw new UnsupportedOperationException();
        }

        @Override
        public void scrollBy(int dy) {
            throw new UnsupportedOperationException();
        }

        @Override
        public int getHeight() {
            throw new UnsupportedOperationException();
        }

        @Override
        public void invalidateView() {
            throw new UnsupportedOperationException();
        }

        @Override
        public void runAtNextFrame(Runnable r) {
            throw new UnsupportedOperationException();
        }

        @Override
        public void removeCallback(Runnable r) {
            throw new UnsupportedOperationException();
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({
        BandSelectModelTest.class,
        MultiSelectManager_GridModelTest.class,
        MultiSelectManager_SelectionTest.class,
        MultiSelectManagerTest.class
})