@Nullable @Override public Resource<?> put(@NonNull Key key, @Nullable Resource<?> resource) { if (resource != null) { listener.onResourceRemoved(resource); } return null; }
@Override protected void onItemEvicted(Key key, Resource<?> item) { if (listener != null) { listener.onResourceRemoved(item); } }
@Override public Resource<?> put(Key key, Resource<?> resource) { listener.onResourceRemoved(resource); return null; }
@Override protected void onItemEvicted(Key key, Resource<?> item) { if (listener != null) { listener.onResourceRemoved(item); } }
@Override public Resource<?> put(Key key, Resource<?> resource) { listener.onResourceRemoved(resource); return null; }
@Test public void testResourceRemovedListenerIsNotifiedWhenResourceIsRemoved() { LruResourceCache resourceCache = new LruResourceCache(100); Resource<?> resource = mockResource(); when(resource.getSize()).thenReturn(200); ResourceRemovedListener listener = mock(ResourceRemovedListener.class); resourceCache.setResourceRemovedListener(listener); resourceCache.put(new MockKey(), resource); verify(listener).onResourceRemoved(eq(resource)); }
@Test public void testTrimMemoryRunningCritical() { TrimClearMemoryCacheHarness harness = new TrimClearMemoryCacheHarness(); harness.resourceCache.trimMemory(ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL); verify(harness.listener).onResourceRemoved(harness.first); verify(harness.listener, never()).onResourceRemoved(harness.second); }
@Test public void testTrimMemoryUiHidden() { TrimClearMemoryCacheHarness harness = new TrimClearMemoryCacheHarness(); harness.resourceCache.trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN); verify(harness.listener).onResourceRemoved(harness.first); verify(harness.listener, never()).onResourceRemoved(harness.second); }
@Test public void clearMemory_afterPutWithExistingItem_evictsOnlyNewItem() { PutWithExistingEntryHarness harness = new PutWithExistingEntryHarness(); harness.cache.put(harness.key, harness.first); harness.cache.put(harness.key, harness.second); verify(harness.listener).onResourceRemoved(harness.first); verify(harness.listener, never()).onResourceRemoved(harness.second); harness.cache.clearMemory(); verify(harness.listener, times(1)).onResourceRemoved(harness.first); verify(harness.listener).onResourceRemoved(harness.second); }
@Test public void onItemEvicted_withNullValue_doesNotNotifyListener() { PutWithExistingEntryHarness harness = new PutWithExistingEntryHarness(); harness.cache.onItemEvicted(new MockKey(), null); verify(harness.listener, never()).onResourceRemoved(anyResource()); }
@Test public void put_withExistingItem_evictsExistingItem() { PutWithExistingEntryHarness harness = new PutWithExistingEntryHarness(); harness.cache.put(harness.key, harness.first); harness.cache.put(harness.key, harness.second); verify(harness.listener).onResourceRemoved(harness.first); }
@Override protected void onItemEvicted(@NonNull Key key, @Nullable Resource<?> item) { if (listener != null && item != null) { listener.onResourceRemoved(item); } }
@Test public void testTrimMemoryModerate() { TrimClearMemoryCacheHarness harness = new TrimClearMemoryCacheHarness(); harness.resourceCache.trimMemory(ComponentCallbacks2.TRIM_MEMORY_MODERATE); verify(harness.listener).onResourceRemoved(harness.first); verify(harness.listener).onResourceRemoved(harness.second); }
@Test public void testTrimMemoryBackground() { TrimClearMemoryCacheHarness harness = new TrimClearMemoryCacheHarness(); harness.resourceCache.trimMemory(ComponentCallbacks2.TRIM_MEMORY_BACKGROUND); verify(harness.listener).onResourceRemoved(eq(harness.first)); verify(harness.listener).onResourceRemoved(eq(harness.second)); }