package it.unimi.dsi.util; import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.util.BloomFilter; import java.util.Random; import junit.framework.TestCase; public class BloomFilterTest extends TestCase { public void testAdd() { BloomFilter bloomFilter = new BloomFilter( 10, 30 ); // High precision assertTrue( bloomFilter.add( "test" ) ); assertFalse( bloomFilter.add( "test" ) ); assertTrue( bloomFilter.add( "foo" ) ); assertTrue( bloomFilter.add( "bar" ) ); assertEquals( 3, bloomFilter.size() ); bloomFilter.clear(); assertTrue( bloomFilter.add( new int[] { 0, 1 } ) ); assertFalse( bloomFilter.add( new int[] { 0, 1 } ) ); assertTrue( bloomFilter.add( new int[] { 1, 2 } ) ); assertTrue( bloomFilter.add( new int[] { 1, 0 } ) ); assertEquals( 3, bloomFilter.size() ); } public void testConflicts() { BloomFilter bloomFilter = new BloomFilter( 1000, 11 ); // Low precision LongOpenHashSet longs = new LongOpenHashSet(); Random random = new Random( 0 ); for( int i = 1000; i-- != 0; ) { final long l = random.nextLong(); longs.add( l ); bloomFilter.add( Long.toBinaryString( l ) ); } assertEquals( longs.size(), bloomFilter.size() ); } }