
test.it.unimi.dsi.fastutil.longs.LongOpenHashBigSetTest Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of phoenix-mapreduce-byo-shaded-hbase-hbase-2.5.0
Show all versions of phoenix-mapreduce-byo-shaded-hbase-hbase-2.5.0
Phoenix Mapreduce JAR for use with the "hbase mapredcp" classpath
The newest version!
package it.unimi.dsi.fastutil.longs;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import it.unimi.dsi.fastutil.Hash;
import it.unimi.dsi.fastutil.HashCommon;
import java.util.Arrays;
import org.junit.Test;
public class LongOpenHashBigSetTest {
@Test
public void testRemove0() {
LongOpenHashBigSet s = new LongOpenHashBigSet( Hash.DEFAULT_INITIAL_SIZE );
for( int i = -1; i <= 1; i++ ) assertTrue( s.add( i ) );
assertTrue( s.remove( 0 ) );
LongIterator iterator = s.iterator();
LongOpenHashSet z = new LongOpenHashSet();
z.add( iterator.nextLong() );
z.add( iterator.nextLong() );
assertFalse( iterator.hasNext() );
assertEquals( new LongOpenHashSet( new long[] { -1, 1 } ), z );
s = new LongOpenHashBigSet( Hash.DEFAULT_INITIAL_SIZE );
for( int i = -1; i <= 1; i++ ) assertTrue( s.add( i ) );
iterator = s.iterator();
while( iterator.hasNext() ) if ( iterator.nextLong() == 0 ) iterator.remove();
assertFalse( s.contains( 0 ) );
iterator = s.iterator();
long[] content = new long[ 2 ];
content[ 0 ] = iterator.nextLong();
content[ 1 ] = iterator.nextLong();
assertFalse( iterator.hasNext() );
Arrays.sort( content );
assertArrayEquals( new long[] { -1, 1 }, content );
}
@Test
public void testWrapAround() {
LongOpenHashBigSet s = new LongOpenHashBigSet( 4, .5f );
assertEquals( 8, s.n );
// The following code inverts HashCommon.phiMix() and places strategically keys in slots 6, 7 and 0
s.add( HashCommon.invMix( 6L ) );
s.add( HashCommon.invMix( 7L ) );
s.add( HashCommon.invMix( 6L + 8 ) );
assertNotEquals( 0, s.key[ 0 ][ 0 ] );
assertNotEquals( 0, s.key[ 0 ][ 6 ] );
assertNotEquals( 0, s.key[ 0 ][ 7 ] );
LongOpenHashBigSet keys = s.clone();
LongIterator iterator = s.iterator();
LongOpenHashBigSet t = new LongOpenHashBigSet();
t.add( iterator.nextLong() );
t.add( iterator.nextLong() );
// Originally, this remove would move the entry in slot 0 in slot 6 and we would return the entry in 0 twice
iterator.remove();
t.add( iterator.nextLong() );
assertEquals( keys, t );
}
@Test
public void testWrapAround2() {
LongOpenHashBigSet s = new LongOpenHashBigSet( 4, .75f );
assertEquals( 8, s.n );
// The following code inverts HashCommon.phiMix() and places strategically keys in slots 4, 5, 6, 7 and 0
s.add( HashCommon.invMix( 4L ) );
s.add( HashCommon.invMix( 5L ) );
s.add( HashCommon.invMix( 4L + 8 ) );
s.add( HashCommon.invMix( 5L + 8 ) );
s.add( HashCommon.invMix( 4L + 16 ) );
assertNotEquals( 0, s.key[ 0 ][ 0 ] );
assertNotEquals( 0, s.key[ 0 ][ 4 ] );
assertNotEquals( 0, s.key[ 0 ][ 5 ] );
assertNotEquals( 0, s.key[ 0 ][ 6 ] );
assertNotEquals( 0, s.key[ 0 ][ 7 ] );
//System.err.println(Arrays.toString( s.key[ 0 ] ));
LongOpenHashBigSet keys = s.clone();
LongIterator iterator = s.iterator();
LongOpenHashBigSet t = new LongOpenHashBigSet();
assertTrue( t.add( iterator.nextLong() ) );
iterator.remove();
//System.err.println(Arrays.toString( s.key[ 0 ] ));
assertTrue( t.add( iterator.nextLong() ) );
//System.err.println(Arrays.toString( s.key[ 0 ] ));
// Originally, this remove would move the entry in slot 0 in slot 6 and we would return the entry in 0 twice
assertTrue( t.add( iterator.nextLong() ) );
//System.err.println(Arrays.toString( s.key[ 0 ] ));
assertTrue( t.add( iterator.nextLong() ) );
iterator.remove();
//System.err.println(Arrays.toString( s.key[ 0 ] ));
assertTrue( t.add( iterator.nextLong() ) );
assertEquals( 3, s.size64() );
assertEquals( keys, t );
}
@Test
public void testWrapAround3() {
LongOpenHashBigSet s = new LongOpenHashBigSet( 4, .75f );
assertEquals( 8, s.n );
// The following code inverts HashCommon.phiMix() and places strategically keys in slots 5, 6, 7, 0 and 1
s.add( HashCommon.invMix( 5L ) );
s.add( HashCommon.invMix( 5L + 8 ) );
s.add( HashCommon.invMix( 5L + 16 ) );
s.add( HashCommon.invMix( 5L + 32 ) );
s.add( HashCommon.invMix( 5L + 64 ) );
assertNotEquals( 0, s.key[ 0 ][ 5 ] );
assertNotEquals( 0, s.key[ 0 ][ 6 ] );
assertNotEquals( 0, s.key[ 0 ][ 7 ] );
assertNotEquals( 0, s.key[ 0 ][ 0 ] );
assertNotEquals( 0, s.key[ 0 ][ 1 ] );
//System.err.println(Arrays.toString( s.key[ 0 ] ));
LongOpenHashBigSet keys = s.clone();
LongIterator iterator = s.iterator();
LongOpenHashBigSet t = new LongOpenHashBigSet();
assertTrue( t.add( iterator.nextLong() ) );
iterator.remove();
//System.err.println(Arrays.toString( s.key[ 0 ] ));
assertTrue( t.add( iterator.nextLong() ) );
iterator.remove();
//System.err.println(Arrays.toString( s.key[ 0 ] ));
// Originally, this remove would move the entry in slot 0 in slot 6 and we would return the entry in 0 twice
assertTrue( t.add( iterator.nextLong() ) );
iterator.remove();
//System.err.println(Arrays.toString( s.key[ 0 ] ));
assertTrue( t.add( iterator.nextLong() ) );
iterator.remove();
//System.err.println(Arrays.toString( s.key[ 0 ] ));
assertTrue( t.add( iterator.nextLong() ) );
iterator.remove();
assertEquals( 0, s.size64() );
assertEquals( keys, t );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy