package com.plexobject.rbac.cache;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.junit.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class CachedMapTest {
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testDefaultSize() {
CachedMap<String, String> cache = new CachedMap<String, String>();
for (int i = 0; i < CachedMap.MAX_ITEMS * 2; i++) {
cache.put("key" + i, "value");
}
Assert.assertEquals(CachedMap.MAX_ITEMS, cache.size());
}
@Test
public void testSize() {
CachedMap<String, String> cache = new CachedMap<String, String>(0, 1);
for (int i = 0; i < CachedMap.MAX_ITEMS * 2; i++) {
cache.put("key" + i, "value");
}
Assert.assertEquals(1, cache.size());
Assert.assertFalse(cache.isEmpty());
}
@Test
public void testIsEmpty() {
CachedMap<String, String> cache = new CachedMap<String, String>(0, 1);
for (int i = 0; i < CachedMap.MAX_ITEMS * 2; i++) {
cache.put("key" + i, "value");
}
Assert.assertFalse(cache.isEmpty());
}
@Test
public void testContainsKey() {
CachedMap<String, String> cache = new CachedMap<String, String>();
for (int i = 0; i < CachedMap.MAX_ITEMS * 2; i++) {
cache.put("key" + i, "value");
}
for (int i = 0; i < CachedMap.MAX_ITEMS; i++) {
Assert.assertFalse(cache.containsKey("key" + i));
}
for (int i = CachedMap.MAX_ITEMS; i < CachedMap.MAX_ITEMS * 2; i++) {
Assert.assertTrue(cache.containsKey("key" + i));
}
}
@Test
public void testContainsValue() {
CachedMap<String, String> cache = new CachedMap<String, String>(0, 10,
null);
for (int i = 0; i < 20; i++) {
cache.put("key" + i, "value" + i);
}
for (int i = 0; i < 10; i++) {
Assert.assertFalse(cache.containsValue("value" + i));
}
for (int i = 10; i < 20; i++) {
Assert.assertTrue("value " + i + " could not be found in " + cache,
cache.containsValue("value" + i));
}
}
@Test
public void testPut() {
CachedMap<String, String> cache = new CachedMap<String, String>(0, 10,
null);
for (int i = 0; i < 20; i++) {
cache.put("key" + i, "value" + i);
}
Assert.assertEquals(10, cache.size());
}
@Test
public void testRemove() {
CachedMap<String, String> cache = new CachedMap<String, String>(0, 10,
null);
for (int i = 0; i < 20; i++) {
cache.put("key" + i, "value" + i);
}
Assert.assertEquals(10, cache.size());
for (int i = 10; i < 20; i++) {
cache.remove("key" + i);
}
Assert.assertEquals(0, cache.size());
}
@Test
public void testPutAll() {
CachedMap<String, String> cache = new CachedMap<String, String>(0, 10,
null);
Map<String, String> map = new HashMap<String, String>();
for (int i = 0; i < 20; i++) {
map.put("key" + i, "value" + i);
}
Assert.assertEquals(20, map.size());
cache.putAll(map);
Assert.assertEquals("unexpected size " + cache.size() + " " + cache,
10, cache.size());
}
@Test
public void testClear() {
CachedMap<String, String> cache = new CachedMap<String, String>(0, 10,
null);
for (int i = 0; i < 20; i++) {
cache.put("key" + i, "value" + i);
}
Assert.assertEquals("unexpected size " + cache.size() + " " + cache,
10, cache.size());
cache.clear();
Assert.assertEquals("unexpected size " + cache.size() + " " + cache, 0,
cache.size());
}
@Test
public void testKeySet() {
CachedMap<String, Integer> cache = new CachedMap<String, Integer>(0,
10, null);
cache.put("A", 1);
cache.put("B", 2);
cache.put("C", 3);
cache.put("C", 4);
Set<String> set = cache.keySet();
Assert.assertEquals(3, set.size());
Assert.assertTrue(set.contains("A"));
Assert.assertTrue(set.contains("B"));
Assert.assertTrue(set.contains("C"));
}
@Test
public void testValues() {
CachedMap<String, Integer> cache = new CachedMap<String, Integer>(0,
10, null);
cache.put("A", 1);
cache.put("B", 2);
cache.put("C", 2);
Collection<Integer> set = cache.values();
Assert.assertEquals(3, set.size());
Assert.assertTrue(set.contains(1));
Assert.assertTrue(set.contains(2));
}
@Test
public void testEntrySet() {
CachedMap<String, Integer> cache = new CachedMap<String, Integer>(0,
10, null);
cache.put("A", 1);
cache.put("B", 2);
cache.put("C", 2);
Set<Map.Entry<String, Integer>> set = cache.entrySet();
Assert.assertEquals(3, set.size());
}
@Test
public void testGetWithLoader() {
CachedMap<String, Integer> cache = new CachedMap<String, Integer>(1,
10, new CacheLoader<String, Integer>() {
@Override
public Integer get(String key) {
return Integer.valueOf(key);
}
});
for (int i = 0; i < 20; i++) {
Assert.assertEquals(new Integer(i), cache.get(String.valueOf(i)));
}
}
@Test
public void testGetWithExpiration() {
CachedMap<String, Integer> cache = new CachedMap<String, Integer>(1,
10, new CacheLoader<String, Integer>() {
@Override
public Integer get(String key) {
return Integer.valueOf(key);
}
});
Assert.assertEquals(new Integer(1), cache.get("1"));
Assert.assertEquals(1, cache.size());
}
@Test
public void testFlushCache() {
CachedMap<String, String> cache = new CachedMap<String, String>(0, 10,
null);
for (int i = 0; i < 20; i++) {
cache.put("key" + i, "value" + i);
}
Assert.assertEquals("unexpected size " + cache.size() + " " + cache,
10, cache.size());
cache.flushCache();
Assert.assertEquals("unexpected size " + cache.size() + " " + cache, 0,
cache.size());
}
@Test
public void testCacheSize() {
}
@Test
public void testEqualsObject() {
}
@Test
public void testToString() {
}
}