Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package it.unimi.dsi.sux4j.bits;
  
  import static org.junit.Assert.assertEquals;
  
  import java.util.Random;
  
  import org.junit.Test;
 
 public class Rank16Test extends RankSelectTestCase {
 
 	@Test
 	public void testEmpty() {
 		Rank16 rank16;
 
 		rank16 = new Rank16new long[ 1 ], 64 );
 		assertRankrank16 );
 		for ( int i = 64; i-- != 0; )
 			assertEquals( Integer.toStringi ), 0, rank16.ranki ) );
 		rank16 = new Rank16new long[ 2 ], 128 );
 		for ( int i = 128; i-- != 0; )
 			assertEquals( 0, rank16.ranki ) );
 		rank16 = new Rank16new long[ 1 ], 63 );
 		for ( int i = 63; i-- != 0; )
 			assertEquals( 0, rank16.ranki ) );
 		rank16 = new Rank16new long[ 2 ], 65 );
 		for ( int i = 65; i-- != 0; )
 			assertEquals( 0, rank16.ranki ) );
 		rank16 = new Rank16new long[ 3 ], 129 );
 		for ( int i = 130; i-- != 0; )
 			assertEquals( 0, rank16.ranki ) );
 
 	}
 
 	@Test
 	public void testSingleton() {
 		Rank16 rank16;
 
 		int i;
 
 		rank16 = new Rank16new long[] { 1L << 63, 0 }, 64 );
 		assertRankrank16 );
 		assertEquals( 1, rank16.rank( 64 ) );
 		assertEquals( 0, rank16.rank( 63 ) );
 		for ( i = 63; i-- != 0; )
 			assertEquals( 0, rank16.ranki ) );
 
 		rank16 = new Rank16new long[] { 1 }, 64 );
 		assertRankrank16 );
 		for ( i = 64; i-- != 2; )
 			assertEquals( 1, rank16.ranki ) );
 		assertEquals( 0, rank16.rank( 0 ) );
 
 		rank16 = new Rank16new long[] { 1L << 63, 0 }, 128 );
 		assertRankrank16 );
 		for ( i = 128; i-- != 64; )
 			assertEquals( 1, rank16.ranki ) );
 		while ( i-- != 0 )
 			assertEquals( 0, rank16.ranki ) );
 
 		rank16 = new Rank16new long[] { 1L << 63, 0 }, 65 );
 		assertRankrank16 );
 		for ( i = 65; i-- != 64; )
 			assertEquals( 1, rank16.ranki ) );
 		while ( i-- != 0 )
 			assertEquals( 0, rank16.ranki ) );
 
 		rank16 = new Rank16new long[] { 1L << 63, 0, 0 }, 129 );
 		assertRankrank16 );
 		for ( i = 128; i-- != 64; )
 			assertEquals( 1, rank16.ranki ) );
 		while ( i-- != 0 )
 			assertEquals( 0, rank16.ranki ) );
 	}
 
 	@Test
 	public void testDoubleton() {
 		Rank16 rank16;
 
 		int i;
 
 		rank16 = new Rank16new long[] { 1 | 1L << 32 }, 64 );
 		assertRankrank16 );
 		for ( i = 64; i-- != 33; )
 			assertEquals( 2, rank16.ranki ) );
 		while ( i-- != 1 )
 			assertEquals( 1, rank16.ranki ) );
 		assertEquals( 0, rank16.rank( 0 ) );
 
 		rank16 = new Rank16new long[] { 1, 1 }, 128 );
 		assertRankrank16 );
 		for ( i = 128; i-- != 65; )
 			assertEquals( 2, rank16.ranki ) );
 		while ( i-- != 1 )
 			assertEquals( 1, rank16.ranki ) );
 		assertEquals( 0, rank16.rank( 0 ) );
 
 		rank16 = new Rank16new long[] { 1 | 1L << 32, 0 }, 63 );
		assertRankrank16 );
		for ( i = 63; i-- != 33; )
			assertEquals( 2, rank16.ranki ) );
		while ( i-- != 1 )
			assertEquals( 1, rank16.ranki ) );
		assertEquals( 0, rank16.rank( 0 ) );
		rank16 = new Rank16new long[] { 1, 1, 0 }, 129 );
		assertRankrank16 );
		for ( i = 129; i-- != 65; )
			assertEquals( 2, rank16.ranki ) );
		while ( i-- != 1 )
			assertEquals( 1, rank16.ranki ) );
		assertEquals( 0, rank16.rank( 0 ) );
	}
	public void testAlternating() {
		Rank16 rank16;
		int i;
		rank16 = new Rank16new long[] { 0xAAAAAAAAAAAAAAAAL }, 64 );
		assertRankrank16 );
		for ( i = 64; i-- != 0; )
			assertEqualsi / 2, rank16.ranki ) );
		rank16 = new Rank16new long[] { 0xAAAAAAAAAAAAAAAAL, 0xAAAAAAAAAAAAAAAAL }, 128 );
		assertRankrank16 );
		for ( i = 128; i-- != 0; )
			assertEqualsi / 2, rank16.ranki ) );
		rank16 = new Rank16new long[] { 0xAAAAAAAAAAAAAAAAL, 0xAAAAAAAAAAAAAAAAL, 0xAAAAAAAAAAAAAAAAL, 0xAAAAAAAAAAAAAAAAL, 0xAAAAAAAAAAAAAAAAL }, 64 * 5 );
		assertRankrank16 );
		for ( i = 64 * 5; i-- != 0; )
			assertEqualsi / 2, rank16.ranki ) );
		rank16 = new Rank16new long[] { 0xAAAAAAAAL }, 33 );
		assertRankrank16 );
		for ( i = 33; i-- != 0; )
			assertEqualsi / 2, rank16.ranki ) );
		rank16 = new Rank16new long[] { 0xAAAAAAAAAAAAAAAAL, 0xAAAAAAAAAAAAL }, 128 );
		assertRankrank16 );
		for ( i = 128; i-- != 113; )
			assertEquals( 56, rank16.ranki ) );
		while ( i-- != 0 )
			assertEqualsi / 2, rank16.ranki ) );
	}
	public void testSelect() {
		Rank16 rank16;
		rank16 = new Rank16( LongArrayBitVector.of( 1, 0, 1, 1, 0, 0, 0 ).bits(), 7 );
		assertRankrank16 );
	}
	public void testRandom() {
		Random r = new XorShift1024StarRandom( 1 );
		LongArrayBitVector bitVector = LongArrayBitVector.getInstance( 1000 );
		for ( int i = 0; i < 1000; i++ )
			bitVector.addr.nextBoolean() );
		Rank16 rank16;
		rank16 = new Rank16bitVector );
		assertRankrank16 );
	}
	public void testAllSizes() {
		Rank16 rank16;
		for ( int size = 0; size <= 4096; size++ ) {
			v = LongArrayBitVector.getInstance().lengthsize );
			for ( int i = ( size + 1 ) / 2; i-- != 0; )
				v.seti * 2 );
			rank16 = new Rank16v );
			for ( int i = size + 1; i-- != 0; )
				assertEquals( ( i + 1 ) / 2, rank16.ranki ) );
		}
	}
	public void testLarge() {
		Rank16 rank16;
		v = LongArrayBitVector.getInstance().length( 100000 );
		for ( int i = 100000 / 2; i-- != 0; )
			v.seti * 2 );
		rank16 = new Rank16v );
		for ( int i = 100000 + 1; i-- != 0; )
			assertEquals( ( i + 1 ) / 2, rank16.ranki ) );
	}
New to GrepCode? Check out our FAQ X