brouter/brouter-util/src/test/java/btools/util/CompactMapTest.java
2014-02-02 17:04:17 +01:00

68 lines
1.9 KiB
Java

package btools.util;
import java.util.Random;
import java.util.HashMap;
import org.junit.Assert;
import org.junit.Test;
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.assertTrue( "containsKey missmatch (slow)", contained == cmap_slow.contains( k ) );
Assert.assertTrue( "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 ) );
}
}
}
}