12d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay/* 22d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * Copyright (C) 2015 The Android Open Source Project 32d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * 42d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * Licensed under the Apache License, Version 2.0 (the "License"); 52d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * you may not use this file except in compliance with the License. 62d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * You may obtain a copy of the License at 72d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * 82d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * http://www.apache.org/licenses/LICENSE-2.0 92d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * 102d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * Unless required by applicable law or agreed to in writing, software 112d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * distributed under the License is distributed on an "AS IS" BASIS, 122d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * See the License for the specific language governing permissions and 142d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay * limitations under the License. 152d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay */ 162d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 174f78ba643270b9d84da1952d8e408220b25ec6fdSteve McKaypackage com.android.documentsui.selection; 182d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 1984bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tanimport static junit.framework.Assert.fail; 202d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 2184bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tanimport android.support.test.filters.SmallTest; 2284bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tanimport android.support.test.runner.AndroidJUnit4; 2384bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tan 244f78ba643270b9d84da1952d8e408220b25ec6fdSteve McKayimport com.android.documentsui.dirlist.TestData; 254f78ba643270b9d84da1952d8e408220b25ec6fdSteve McKayimport com.android.documentsui.dirlist.TestDocumentsAdapter; 264f78ba643270b9d84da1952d8e408220b25ec6fdSteve McKayimport com.android.documentsui.selection.SelectionManager; 275b0a2c187a9e446b683687817d22cbe443585223Steve McKayimport com.android.documentsui.testing.SelectionManagers; 282d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 2984bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tanimport org.junit.Before; 3084bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tanimport org.junit.Test; 3184bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tanimport org.junit.runner.RunWith; 3284bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tan 332d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKayimport java.util.List; 342d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 3584bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tan@RunWith(AndroidJUnit4.class) 362d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay@SmallTest 374f78ba643270b9d84da1952d8e408220b25ec6fdSteve McKaypublic class SelectionManager_SingleSelectTest { 382d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 392d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay private static final List<String> ITEMS = TestData.create(100); 402d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 414f78ba643270b9d84da1952d8e408220b25ec6fdSteve McKay private SelectionManager mManager; 422d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay private TestSelectionListener mCallback; 432d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay private TestDocumentsAdapter mAdapter; 442d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay private SelectionProbe mSelection; 452d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 4684bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tan @Before 472d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay public void setUp() throws Exception { 482d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mCallback = new TestSelectionListener(); 495b0a2c187a9e446b683687817d22cbe443585223Steve McKay mManager = SelectionManagers.createTestInstance(ITEMS, SelectionManager.MODE_SINGLE); 502d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mManager.addCallback(mCallback); 512d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 522d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mSelection = new SelectionProbe(mManager); 532d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay } 542d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 5584bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tan @Test 562d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay public void testSimpleSelect() { 572d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mManager.toggleSelection(ITEMS.get(3)); 582d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mManager.toggleSelection(ITEMS.get(4)); 592d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mCallback.assertSelectionChanged(); 602d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mSelection.assertSelection(4); 612d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay } 622d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 6384bd0f13bd02ea26acc937b00c050884dc7546efGarfield Tan @Test 642d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay public void testRangeSelectionNotEstablished() { 652d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mManager.toggleSelection(ITEMS.get(3)); 662d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mCallback.reset(); 672d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 682d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay try { 692d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mManager.snapRangeSelection(10); 702d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay fail("Should have thrown."); 712d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay } catch (Exception expected) {} 722d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay 732d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mCallback.assertSelectionUnchanged(); 742d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay mSelection.assertSelection(3); 752d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay } 762d1e4a3bb8bd58d2f0c92cbedeafe4ab8b71448eSteve McKay} 77