/*
* Copyright 2010, 2011, 2012 mapsforge.org
*
* This program is free software: you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.mapsforge.core.util;
import org.junit.Assert;
import org.junit.Test;
public class LRUCacheTest {
private static final String KEY1 = "foo1";
private static final String KEY2 = "foo2";
private static final String KEY3 = "foo3";
private static final String VALUE1 = "bar1";
private static final String VALUE2 = "bar2";
private static final String VALUE3 = "bar3";
private static LRUCache<String, String> createLRUCache(int capacity) {
return new LRUCache<String, String>(capacity);
}
@Test
public void lruCacheTest() {
LRUCache<String, String> lruCache = createLRUCache(2);
lruCache.put(KEY1, VALUE1);
Assert.assertEquals(VALUE1, lruCache.get(KEY1));
Assert.assertFalse(lruCache.containsKey(KEY2));
Assert.assertFalse(lruCache.containsKey(KEY3));
lruCache.put(KEY2, VALUE2);
Assert.assertEquals(VALUE1, lruCache.get(KEY1));
Assert.assertEquals(VALUE2, lruCache.get(KEY2));
Assert.assertFalse(lruCache.containsKey(KEY3));
lruCache.put(KEY3, VALUE3);
Assert.assertFalse(lruCache.containsKey(KEY1));
Assert.assertEquals(VALUE2, lruCache.get(KEY2));
Assert.assertEquals(VALUE3, lruCache.get(KEY3));
lruCache.put(KEY1, VALUE1);
Assert.assertEquals(VALUE1, lruCache.get(KEY1));
Assert.assertFalse(lruCache.containsKey(KEY2));
Assert.assertEquals(VALUE3, lruCache.get(KEY3));
}
@Test
public void lruCacheWithCapacityZeroTest() {
LRUCache<String, String> lruCache = createLRUCache(0);
lruCache.put(KEY1, VALUE1);
Assert.assertFalse(lruCache.containsKey(KEY1));
}
@Test
public void lruCacheWithNegativeCapacityTest() {
try {
createLRUCache(-1);
Assert.fail();
} catch (IllegalArgumentException e) {
Assert.assertTrue(true);
}
}
}