package edu.berkeley.cs.succinct.util.stream.serops; import edu.berkeley.cs.succinct.util.bitmap.BitMap; import edu.berkeley.cs.succinct.util.stream.RandomAccessLongStream; import edu.berkeley.cs.succinct.util.stream.TestUtils; import junit.framework.TestCase; import org.apache.hadoop.fs.FSDataInputStream; import java.nio.LongBuffer; import java.util.ArrayList; public class BitMapOpsTest extends TestCase { /** * Set up test. * * @throws Exception */ public void setUp() throws Exception { super.setUp(); } /** * Test method: long getBit(LongBuffer bitmap, int i) * * @throws Exception */ public void testGetBit() throws Exception { BitMap instance = new BitMap(1000L); ArrayList<Long> test = new ArrayList<Long>(); for (int i = 0; i < 1000; i++) { if ((int) (Math.random() * 2) == 1) { instance.setBit(i); test.add(1L); } else { test.add(0L); } } LongBuffer bBuf = instance.getLongBuffer(); FSDataInputStream is = TestUtils.getStream(bBuf); RandomAccessLongStream ls = new RandomAccessLongStream(is, 0, bBuf.limit()); for (int i = 0; i < 1000; i++) { long expResult = test.get(i); long result = BitMapOps.getBit(ls, i); assertEquals(expResult, result); } is.close(); } /** * Test method: long getValPos(LongBuffer bitmap, int pos, int bits) * * @throws Exception */ public void testGetValPos() throws Exception { int pos = 60; int bits = 10; BitMap instance = new BitMap(1000L); instance.setValPos(pos, 1000, bits); LongBuffer bBuf = instance.getLongBuffer(); FSDataInputStream is = TestUtils.getStream(bBuf); RandomAccessLongStream ls = new RandomAccessLongStream(is, 0, bBuf.limit()); long expResult = 1000L; long result = BitMapOps.getValPos(ls, pos, bits); assertEquals(expResult, result); is.close(); } }