Merge "Only fire EvictionCallback when item actually evicted"
This commit is contained in:
committed by
Android (Google) Code Review
commit
23e5669c92
@@ -49,7 +49,7 @@ public class TaskKeyLruCache<V> extends TaskKeyCache<V> {
|
||||
|
||||
@Override
|
||||
protected void entryRemoved(boolean evicted, Integer taskId, V oldV, V newV) {
|
||||
if (mEvictionCallback != null) {
|
||||
if (mEvictionCallback != null && evicted) {
|
||||
mEvictionCallback.onEntryEvicted(mKeys.get(taskId));
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,10 @@ package com.android.systemui.shared.recents.model;
|
||||
import static junit.framework.TestCase.assertEquals;
|
||||
import static junit.framework.TestCase.assertNull;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
@@ -27,10 +31,10 @@ import com.android.systemui.SysuiTestCase;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.JUnit4;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
@SmallTest
|
||||
@RunWith(JUnit4.class)
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class TaskKeyLruCacheTest extends SysuiTestCase {
|
||||
private static int sCacheSize = 3;
|
||||
private static int sIdTask1 = 1;
|
||||
@@ -38,13 +42,18 @@ public class TaskKeyLruCacheTest extends SysuiTestCase {
|
||||
private static int sIdTask3 = 3;
|
||||
private static int sIdUser1 = 1;
|
||||
|
||||
TaskKeyCache<Integer> mCache = new TaskKeyLruCache<>(sCacheSize, null);
|
||||
Task.TaskKey mKey1;
|
||||
Task.TaskKey mKey2;
|
||||
Task.TaskKey mKey3;
|
||||
TaskKeyLruCache.EvictionCallback mEvictionCallback;
|
||||
|
||||
TaskKeyLruCache<Integer> mCache;
|
||||
private Task.TaskKey mKey1;
|
||||
private Task.TaskKey mKey2;
|
||||
private Task.TaskKey mKey3;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
mEvictionCallback = mock(TaskKeyLruCache.EvictionCallback.class);
|
||||
mCache = new TaskKeyLruCache<>(sCacheSize, mEvictionCallback);
|
||||
|
||||
mKey1 = new Task.TaskKey(sIdTask1, 0, null, null, sIdUser1, System.currentTimeMillis());
|
||||
mKey2 = new Task.TaskKey(sIdTask2, 0, null, null, sIdUser1, System.currentTimeMillis());
|
||||
mKey3 = new Task.TaskKey(sIdTask3, 0, null, null, sIdUser1, System.currentTimeMillis());
|
||||
@@ -90,6 +99,7 @@ public class TaskKeyLruCacheTest extends SysuiTestCase {
|
||||
assertNull(mCache.get(mKey1));
|
||||
assertEquals(3, mCache.mKeys.size());
|
||||
assertEquals(mKey2, mCache.mKeys.valueAt(0));
|
||||
verify(mEvictionCallback, times(1)).onEntryEvicted(mKey1);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -102,5 +112,29 @@ public class TaskKeyLruCacheTest extends SysuiTestCase {
|
||||
|
||||
assertNull(mCache.get(mKey2));
|
||||
assertEquals(2, mCache.mKeys.size());
|
||||
verify(mEvictionCallback, times(0)).onEntryEvicted(mKey2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void put_evictionCallback_notCalled() {
|
||||
mCache.put(mKey1, 1);
|
||||
verify(mEvictionCallback, times(0)).onEntryEvicted(mKey1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void evictAll_evictionCallback_called() {
|
||||
mCache.put(mKey1, 1);
|
||||
mCache.evictAllCache();
|
||||
verify(mEvictionCallback, times(1)).onEntryEvicted(mKey1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void trimAll_evictionCallback_called() {
|
||||
mCache.put(mKey1, 1);
|
||||
mCache.put(mKey2, 2);
|
||||
mCache.trimToSize(-1);
|
||||
verify(mEvictionCallback, times(1)).onEntryEvicted(mKey1);
|
||||
verify(mEvictionCallback, times(1)).onEntryEvicted(mKey2);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user