1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.support.v7.util; 18 19import static org.mockito.Mockito.verify; 20import static org.mockito.Mockito.verifyNoMoreInteractions; 21import static org.mockito.Mockito.verifyZeroInteractions; 22 23import android.support.test.filters.SmallTest; 24 25import org.junit.Before; 26import org.junit.Test; 27import org.junit.runner.RunWith; 28import org.junit.runners.JUnit4; 29import org.mockito.Mockito; 30 31@SuppressWarnings("unchecked") 32@RunWith(JUnit4.class) 33@SmallTest 34public class SortedListBatchedCallbackTest { 35 SortedList.BatchedCallback mBatchedCallback; 36 SortedList.Callback mMockCallback; 37 @Before 38 public void init() { 39 mMockCallback = Mockito.mock(SortedList.Callback.class); 40 mBatchedCallback = new SortedList.BatchedCallback(mMockCallback); 41 } 42 43 @Test 44 public void onChange() { 45 mBatchedCallback.onChanged(1, 2); 46 verifyZeroInteractions(mMockCallback); 47 mBatchedCallback.dispatchLastEvent(); 48 verify(mMockCallback).onChanged(1, 2, null); 49 verifyNoMoreInteractions(mMockCallback); 50 } 51 52 @Test 53 public void onRemoved() { 54 mBatchedCallback.onRemoved(2, 3); 55 verifyZeroInteractions(mMockCallback); 56 mBatchedCallback.dispatchLastEvent(); 57 verify(mMockCallback).onRemoved(2, 3); 58 verifyNoMoreInteractions(mMockCallback); 59 } 60 61 @Test 62 public void onInserted() { 63 mBatchedCallback.onInserted(3, 4); 64 verifyNoMoreInteractions(mMockCallback); 65 mBatchedCallback.dispatchLastEvent(); 66 verify(mMockCallback).onInserted(3, 4); 67 verifyNoMoreInteractions(mMockCallback); 68 } 69 70 @Test 71 public void onMoved() { 72 mBatchedCallback.onMoved(5, 6); 73 // moves are not merged 74 verify(mMockCallback).onMoved(5, 6); 75 verifyNoMoreInteractions(mMockCallback); 76 } 77 78 @Test 79 public void compare() { 80 Object o1 = new Object(); 81 Object o2 = new Object(); 82 mBatchedCallback.compare(o1, o2); 83 verify(mMockCallback).compare(o1, o2); 84 verifyNoMoreInteractions(mMockCallback); 85 } 86 87 @Test 88 public void areContentsTheSame() { 89 Object o1 = new Object(); 90 Object o2 = new Object(); 91 mBatchedCallback.areContentsTheSame(o1, o2); 92 verify(mMockCallback).areContentsTheSame(o1, o2); 93 verifyNoMoreInteractions(mMockCallback); 94 } 95 96 @Test 97 public void areItemsTheSame() { 98 Object o1 = new Object(); 99 Object o2 = new Object(); 100 mBatchedCallback.areItemsTheSame(o1, o2); 101 verify(mMockCallback).areItemsTheSame(o1, o2); 102 verifyNoMoreInteractions(mMockCallback); 103 } 104} 105