1a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev/* 2a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * Copyright (C) 2015 The Android Open Source Project 3a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * 4a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * Licensed under the Apache License, Version 2.0 (the "License"); 5a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * you may not use this file except in compliance with the License. 6a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * You may obtain a copy of the License at 7a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * 8a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * http://www.apache.org/licenses/LICENSE-2.0 9a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * 10a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * Unless required by applicable law or agreed to in writing, software 11a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * distributed under the License is distributed on an "AS IS" BASIS, 12a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * See the License for the specific language governing permissions and 14a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev * limitations under the License. 15a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev */ 16a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 170a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar 18a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevpackage android.support.v7.util; 19a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 20a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport android.support.test.runner.AndroidJUnit4; 21a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport android.support.v7.util.TileList; 22f1b288ec2104488f4a92e911b0ab80c8f0f3e9d1Yigit Boyarimport android.test.suitebuilder.annotation.SmallTest; 23a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 24a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport static org.hamcrest.MatcherAssert.*; 25a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport static org.hamcrest.CoreMatchers.*; 26a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport org.junit.Before; 27a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport org.junit.Test; 28a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevimport org.junit.runner.RunWith; 29a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 30a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev@RunWith(AndroidJUnit4.class) 31f1b288ec2104488f4a92e911b0ab80c8f0f3e9d1Yigit Boyar@SmallTest 32a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheevpublic class TileListTest { 33a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev int mTileSize = 3; 34a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev TileList<Integer> mTileList; 35a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 36a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Before 37a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev public void setUp() throws Exception { 38a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mTileList = new TileList<>(mTileSize); 39a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 40a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 41a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 420a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void emptyGet() { 43a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getItemAt(3), nullValue()); 44a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getItemAt(100), nullValue()); 45a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 46a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 47a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 480a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void getItemAt() { 49a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(0, 1, 2, 3)), nullValue()); 500a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(0), is(1)); 510a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(1), is(2)); 520a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(2), is(3)); 53a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getItemAt(3), nullValue()); 54a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 55a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 56a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 570a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void size() { 58a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.size(), is(0)); 59a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(0, 1, 2, 3)), nullValue()); 60a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.size(), is(1)); 61a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(0, 3, 4, 5)), notNullValue()); 62a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.size(), is(1)); 63a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(3, 1, 2, 3)), nullValue()); 64a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.size(), is(2)); 65a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 66a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mTileList.clear(); 67a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.size(), is(0)); 68a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 69a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 70a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 710a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void getAtIndex() { 72a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(0, 1, 2, 3)), nullValue()); 73a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(3, 1, 2, 3)), nullValue()); 74a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(6, 1, 2, 3)), nullValue()); 75a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 76a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getAtIndex(0).mStartPosition, is(0)); 77a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getAtIndex(1).mStartPosition, is(3)); 78a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getAtIndex(2).mStartPosition, is(6)); 79a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getAtIndex(3), nullValue()); 80a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 81a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 820a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar @Test 830a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void addShortTileAndGet() { 84a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(0, 1)), nullValue()); 850a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(0), is(1)); 860a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(1), nullValue()); 870a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(2), nullValue()); 88a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 89a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 90a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 910a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void addToReplaceAndGet() { 92a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev TileList.Tile<Integer> prev = createTile(0, 1, 2, 3); 93a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mTileList.addOrReplace(prev); 94a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(0, 4, 5, 6)), sameInstance(prev)); 950a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(0), is(4)); 960a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(1), is(5)); 970a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(2), is(6)); 98a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getItemAt(3), nullValue()); 99a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 100a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 101a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 1020a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void addRangeWithGapAndGet() { 103a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mTileList.addOrReplace(createTile(0, 1, 2, 3)); 104a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(mTileSize * 2, 4, 5, 6)), nullValue()); 1050a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(0), is(1)); 1060a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(1), is(2)); 1070a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(2), is(3)); 108a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getItemAt(mTileSize), nullValue()); 109a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getItemAt(mTileSize + 1), nullValue()); 110a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.getItemAt(mTileSize + 2), nullValue()); 1110a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(mTileSize * 2), is(4)); 1120a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(mTileSize * 2 + 1), is(5)); 1130a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(mTileSize * 2 + 2), is(6)); 114a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.addOrReplace(createTile(mTileSize, 7, 8, 9)), nullValue()); 1150a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(mTileSize), is(7)); 1160a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(mTileSize + 1), is(8)); 1170a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar assertThat(mTileList.getItemAt(mTileSize + 2), is(9)); 118a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 119a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 120a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev @Test 1210a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar public void remove() { 122a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mTileList.addOrReplace(createTile(0, 1, 2, 3)); 123a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mTileList.addOrReplace(createTile(3, 4, 5, 6)); 124a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mTileList.addOrReplace(createTile(6, 7, 8, 9)); 125a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev mTileList.addOrReplace(createTile(9, 10, 11, 12)); 126a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 127a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.removeAtPos(0).mStartPosition, is(0)); 128a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.size(), is(3)); 129a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 130a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.removeAtPos(6).mStartPosition, is(6)); 131a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.size(), is(2)); 132a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 133a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.removeAtPos(9).mStartPosition, is(9)); 134a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev assertThat(mTileList.size(), is(1)); 135a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 136a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev 137a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev private TileList.Tile<Integer> createTile(int startPosition, int... items) { 138a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev TileList.Tile<Integer> window = new TileList.Tile<>(Integer.class, mTileSize); 139a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev window.mStartPosition = startPosition; 140a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev window.mItemCount = items.length; 141a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev for (int i = 0; i < items.length; i ++) { 142a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev window.mItems[i] = items[i]; 143a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 144a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev return window; 145a1470623b0f7c52c9e3985012bf9daeb692d7bccVladislav Kaznacheev } 1460a017072206f93474ccd2706e7983c2ff778b904Yigit Boyar}