package com.limegroup.gnutella.util;
import java.util.HashMap;
import java.util.Map;
import junit.framework.Test;
/**
* Unit tests for ForgetfulHashMap
*/
public class ForgetfulHashMapTest extends BaseTestCase {
public ForgetfulHashMapTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(ForgetfulHashMapTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
public void testLegacy() {
//The cryptic variable names are um..."legacy variables" =)
ForgetfulHashMap rt=null;
String g1="key1";
String g2="key2";
String g3="key3";
String g4="key4";
String c1="value1";
String c2="value2";
String c3="value3";
String c4="value4";
//1. FIFO put/get tests
rt=new ForgetfulHashMap(3);
rt.put(g1, c1);
rt.put(g2, c2);
rt.put(g3, c3);
assertSame(c1, rt.get(g1));
assertSame(c2, rt.get(g2));
assertSame(c3, rt.get(g3));
rt.put(g4, c4);
assertNull(rt.get(g1));
assertSame(c2, rt.get(g2));
assertSame(c3, rt.get(g3));
assertSame(c4, rt.get(g4));
rt.put(g1, c1);
assertSame(c1, rt.get(g1));
assertNull(rt.get(g2));
assertSame(c3, rt.get(g3));
assertSame(c4, rt.get(g4));
rt=new ForgetfulHashMap(1);
rt.put(g1, c1);
assertSame(c1, rt.get(g1));
rt.put(g2, c2);
assertNull(rt.get(g1));
assertSame(c2, rt.get(g2));
rt.put(g3, c3);
assertNull(rt.get(g1));
assertNull(rt.get(g2));
assertSame(c3, rt.get(g3));
rt=new ForgetfulHashMap(2);
rt.put(g1,c1);
rt.remove(g1);
assertNull(rt.get(g1));
//2. Remove tests
rt=new ForgetfulHashMap(2);
rt.put(g1,c1);
rt.remove(g1);
assertNull(rt.get(g1));
rt.put(g1,c2);
assertSame(c2, rt.get(g1));
//3. putAll tests.
rt=new ForgetfulHashMap(3);
Map m=new HashMap();
m.put(g1,c1);
m.put(g2,c2);
rt.putAll(m);
assertSame(c1, rt.get(g1));
assertSame(c2, rt.get(g2));
}
}