brouter/brouter-util/src/test/java/btools/util/CompactMapTest.java

60 lines
1.8 KiB
Java

package btools.util;
import org.junit.Assert;
import org.junit.Test;
import java.util.HashMap;
import java.util.Random;
public class CompactMapTest {
@Test
public void hashMapComparisonTest() {
hashMapComparison(0, 1);
hashMapComparison(1, 1);
hashMapComparison(2, 2);
hashMapComparison(3, 3);
hashMapComparison(4, 4);
hashMapComparison(5, 5);
hashMapComparison(7, 10);
hashMapComparison(8, 10);
hashMapComparison(10000, 20000);
}
private void hashMapComparison(int mapsize, int trycount) {
Random rand = new Random(12345);
HashMap<Long, String> hmap = new HashMap<Long, String>();
CompactLongMap<String> cmap_slow = new CompactLongMap<String>();
CompactLongMap<String> cmap_fast = new CompactLongMap<String>();
for (int i = 0; i < mapsize; i++) {
String s = "" + i;
long k = mapsize < 10 ? i : rand.nextInt(20000);
Long KK = new Long(k);
if (!hmap.containsKey(KK)) {
hmap.put(KK, s);
cmap_slow.put(k, s);
cmap_fast.fastPut(k, s);
}
}
for (int i = 0; i < trycount * 2; i++) {
if (i == trycount) {
cmap_slow = new FrozenLongMap<String>(cmap_slow);
cmap_fast = new FrozenLongMap<String>(cmap_fast);
}
long k = mapsize < 10 ? i : rand.nextInt(20000);
Long KK = new Long(k);
String s = hmap.get(KK);
boolean contained = hmap.containsKey(KK);
Assert.assertEquals("containsKey missmatch (slow)", contained, cmap_slow.contains(k));
Assert.assertEquals("containsKey missmatch (fast)", contained, cmap_fast.contains(k));
if (contained) {
Assert.assertEquals("object missmatch (fast)", s, cmap_fast.get(k));
Assert.assertEquals("object missmatch (slow)", s, cmap_slow.get(k));
}
}
}
}