### Question:
BandSelectionHelper implements OnItemTouchListener { @VisibleForTesting boolean shouldStart(@NonNull MotionEvent e) { return MotionEvents.isPrimaryMouseButtonPressed(e) && MotionEvents.isActionMove(e) && mBandPredicate.canInitiate(e) && !isActive(); } BandSelectionHelper(
            @NonNull BandHost host,
            @NonNull AutoScroller scroller,
            @NonNull ItemKeyProvider<K> keyProvider,
            @NonNull SelectionTracker<K> selectionTracker,
            @NonNull BandPredicate bandPredicate,
            @NonNull FocusDelegate<K> focusDelegate,
            @NonNull OperationMonitor lock); @Override boolean onInterceptTouchEvent(@NonNull RecyclerView unused, @NonNull MotionEvent e); @Override void onTouchEvent(@NonNull RecyclerView unused, @NonNull MotionEvent e); @Override void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept);  }### Answer:
@Test public void testStartsBand() { assertTrue(mBandController.shouldStart(mStartEvent)); }
@Test public void testStartsBand_NoItems() { mAdapter.updateTestModelIds(Collections.EMPTY_LIST); assertTrue(mBandController.shouldStart(mStartEvent)); }
@Test public void testBadStart_NoButtons() { assertFalse(mBandController.shouldStart( mStartBuilder.releaseButton(MotionEvent.BUTTON_PRIMARY).build())); }
@Test public void testBadStart_SecondaryButton() { assertFalse( mBandController.shouldStart(mStartBuilder.secondary().build())); }
@Test public void testBadStart_TertiaryButton() { assertFalse( mBandController.shouldStart(mStartBuilder.tertiary().build())); }
@Test public void testBadStart_Touch() { assertFalse(mBandController.shouldStart( mStartBuilder.touch().releaseButton(MotionEvent.BUTTON_PRIMARY).build())); }
@Test public void testBadStart_RespectsCanInitiateBand() { mBandPredicate.setCanInitiate(false); assertFalse(mBandController.shouldStart(mStartEvent)); }
@Test public void testBadStart_ActionDown() { assertFalse(mBandController .shouldStart(mStartBuilder.action(MotionEvent.ACTION_DOWN).build())); }
@Test public void testBadStart_ActionUp() { assertFalse(mBandController .shouldStart(mStartBuilder.action(MotionEvent.ACTION_UP).build())); }
@Test public void testBadStart_ActionPointerDown() { assertFalse(mBandController.shouldStart( mStartBuilder.action(MotionEvent.ACTION_POINTER_DOWN).build())); }
@Test public void testBadStart_ActionPointerUp() { assertFalse(mBandController.shouldStart( mStartBuilder.action(MotionEvent.ACTION_POINTER_UP).build())); }
@Test public void testBadStart_alreadyActive() { mIsActive = true; assertFalse(mBandController.shouldStart(mStartEvent)); }