package com.sogeti.droidnetworking.test.unit; import java.util.Map; import com.sogeti.droidnetworking.external.LruCache; import junit.framework.TestCase; public class LruCacheTest extends TestCase { @Override public void setUp() throws Exception { super.setUp(); } @Override protected void tearDown() throws Exception { super.tearDown(); } public void testCache() { LruCache<String, String> cache = new LruCache<String, String>(2); // The cache should be able to hold 2 entries assertTrue(cache.maxSize() == 2); // Put two values and check that the size is correct assertTrue(cache.size() == 0); cache.put("1", "AA"); assertTrue(cache.size() == 1); cache.put("2", "BB"); assertTrue(cache.size() == 2); // Put one more value, the oldest value should be evicted. cache.put("3", "CC"); // Total number of puts should be 3 assertTrue(cache.putCount() == 3); // Key 1 should not be in the cache any more assertTrue(cache.get("1") == null); // One value should have been evicted so far assertTrue(cache.evictionCount() == 1); // No hits in the cache so far and one miss assertTrue(cache.hitCount() == 0); assertTrue(cache.missCount() == 1); // Get some data from the cache assertTrue(cache.get("2").equalsIgnoreCase("BB")); assertTrue(cache.get("3").equalsIgnoreCase("CC")); // To hits in the cache should have been recorded assertTrue(cache.hitCount() == 2); // Remove one value cache.remove("2"); assertTrue(cache.get("2") == null); cache.put("4", "DD"); assertTrue(cache.size() == 2); // Evict all values cache.evictAll(); assertTrue(cache.size() == 0); cache.resize(3); // The cache should be able to hold 3 entries assertTrue(cache.maxSize() == 3); assertTrue(cache.size() == 0); cache.put("1", "AA"); assertTrue(cache.size() == 1); cache.put("2", "BB"); assertTrue(cache.size() == 2); cache.put("3", "CC"); assertTrue(cache.size() == 3); // Number of times a value was recreated assertTrue(cache.createCount() == 0); // Create a snapshot of the cache Map<String, String> snapshot = cache.snapshot(); // It should not be null assertFalse(snapshot == null); // It should have a size of 3 assertTrue(snapshot.size() == 3); } }