/
NikolayIvkin
/
tutorials1
Обзор
Документация
Войти
/
NikolayIvkin
/
tutorials1
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
data-structures/src/test/java/com/baeldung/lrucache/LRUCacheUnitTest.java
51 строка
2 KB
Arash Ariani
Bael 4464 (#11062)
23 июл 2021, 15:48
23 июл 2021, 15:48
0ed3f46
Код
Авторство
О чём код?
package com.baeldung.lrucache; import org.junit.Test; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.IntStream; import static org.junit.Assert.*; public class LRUCacheUnitTest { @Test public void addSomeDataToCache_WhenGetData_ThenIsEqualWithCacheElement() { LRUCache<String, String> lruCache = new LRUCache<>(3); lruCache.put("1", "test1"); lruCache.put("2", "test2"); lruCache.put("3", "test3"); assertEquals("test1", lruCache.get("1").get()); assertEquals("test2", lruCache.get("2").get()); assertEquals("test3", lruCache.get("3").get()); } @Test public void addDataToCacheToTheNumberOfSize_WhenAddOneMoreData_ThenLeastRecentlyDataWillEvict() { LRUCache<String, String> lruCache = new LRUCache<>(3); lruCache.put("1", "test1"); lruCache.put("2", "test2"); lruCache.put("3", "test3"); lruCache.put("4", "test4"); assertFalse(lruCache.get("1").isPresent()); } @Test public void runMultiThreadTask_WhenPutDataInConcurrentToCache_ThenNoDataLost() throws Exception { final int size = 50; final ExecutorService executorService = Executors.newFixedThreadPool(5); Cache<Integer, String> cache = new LRUCache<>(size); CountDownLatch countDownLatch = new CountDownLatch(size); try { IntStream.range(0, size).<Runnable>mapToObj(key -> () -> { cache.put(key, "value" + key); countDownLatch.countDown(); }).forEach(executorService::submit); countDownLatch.await(); } finally { executorService.shutdown(); } assertEquals(cache.size(), size); IntStream.range(0, size).forEach(i -> assertEquals("value" + i, cache.get(i).get())); } }