### Question:
DefaultSelectionTracker extends SelectionTracker<K> { @Override public boolean setItemsSelected(@NonNull Iterable<K> keys, boolean selected) { boolean changed = setItemsSelectedQuietly(keys, selected); notifySelectionChanged(); return changed; } DefaultSelectionTracker(
            @NonNull String selectionId,
            @NonNull ItemKeyProvider keyProvider,
            @NonNull SelectionPredicate selectionPredicate,
            @NonNull StorageStrategy<K> storage); @Override void addObserver(@NonNull SelectionObserver callback); @Override boolean hasSelection(); @Override Selection getSelection(); @Override void copySelection(@NonNull MutableSelection dest); @Override boolean isSelected(@Nullable K key); @Override boolean setItemsSelected(@NonNull Iterable<K> keys, boolean selected); @Override boolean clearSelection(); @Override boolean select(@NonNull K key); @Override boolean deselect(@NonNull K key); @Override void startRange(int position); @Override void extendRange(int position); @Override void endRange(); @Override void anchorRange(int position); @Override void extendProvisionalRange(int position); @Override void setProvisionalSelection(@NonNull Set<K> newSelection); @Override void mergeProvisionalSelection(); @Override void clearProvisionalSelection(); @Override boolean isRangeActive(); @Override @SuppressWarnings("unchecked") final void onSaveInstanceState(@NonNull Bundle state); @Override final void onRestoreInstanceState(@Nullable Bundle state);  }### Answer:
@Test public void testSetItemsSelected() { mTracker.setItemsSelected(getStringIds(6, 7, 8), true); mSelection.assertRangeSelected(6, 8); }
@Test public void testSetItemsSelected_SkipUnselectableItem() { mIgnored.add(mItems.get(7)); mTracker.setItemsSelected(getStringIds(6, 7, 8), true); mSelection.assertSelected(6); mSelection.assertNotSelected(7); mSelection.assertSelected(8); }