package edu.berkeley.cs.succinct.util.stream.serops; import edu.berkeley.cs.succinct.util.bitmap.BitMap; import edu.berkeley.cs.succinct.util.dictionary.Dictionary; import edu.berkeley.cs.succinct.util.stream.RandomAccessByteStream; import edu.berkeley.cs.succinct.util.stream.TestUtils; import junit.framework.TestCase; import org.apache.hadoop.fs.FSDataInputStream; import java.nio.ByteBuffer; import java.util.ArrayList; public class DictionaryOpsTest extends TestCase { /** * Set up test. * * @throws Exception */ public void setUp() throws Exception { super.setUp(); } /** * Test method: getRank1(ByteBuffer buf, int startPos, int i) * * @throws Exception */ public void testGetRank1() throws Exception { BitMap B = new BitMap(2048); for (int i = 0; i < 2048; i++) { if ((int) (Math.random() * 2) == 1) { B.setBit(i); } } Dictionary D = new Dictionary(B); ByteBuffer dBuf = D.getByteBuffer(); FSDataInputStream is = TestUtils.getStream(dBuf); RandomAccessByteStream bs = new RandomAccessByteStream(is, 0, dBuf.limit()); for (int i = 0; i < 2048; i++) { assertEquals(DictionaryOps.getRank1(bs, 0, i), D.getRank1(i)); } is.close(); } /** * Test method: getRank0(ByteBuffer buf, int startPos, int i) * * @throws Exception */ public void testGetRank0() throws Exception { BitMap B = new BitMap(2048); for (int i = 0; i < 2048; i++) { if ((int) (Math.random() * 2) == 1) { B.setBit(i); } } Dictionary D = new Dictionary(B); ByteBuffer dBuf = D.getByteBuffer(); FSDataInputStream is = TestUtils.getStream(dBuf); RandomAccessByteStream bs = new RandomAccessByteStream(is, 0, dBuf.limit()); for (int i = 0; i < 2048; i++) { assertEquals(DictionaryOps.getRank0(bs, 0, i), D.getRank0(i)); } is.close(); } /** * Test method: getSelect1(ByteBuffer buf, int startPos, int i) * * @throws Exception */ public void testGetSelect1() throws Exception { BitMap B = new BitMap(2048); ArrayList<Long> test = new ArrayList<Long>(); for (int i = 0; i < 2048; i++) { if ((int) (Math.random() * 2) == 1) { B.setBit(i); test.add((long) i); } } Dictionary D = new Dictionary(B); ByteBuffer dBuf = D.getByteBuffer(); FSDataInputStream is = TestUtils.getStream(dBuf); RandomAccessByteStream bs = new RandomAccessByteStream(is, 0, dBuf.limit()); for (int i = 0; i < test.size(); i++) { assertEquals(DictionaryOps.getSelect1(bs, 0, i), (long) test.get(i)); } is.close(); } /** * Test method: getSelect0(ByteBuffer buf, int startPos, int i) * * @throws Exception */ public void testGetSelect0() throws Exception { BitMap B = new BitMap(2048); ArrayList<Long> test = new ArrayList<Long>(); for (int i = 0; i < 2048; i++) { if ((int) (Math.random() * 2) == 1) { B.setBit(i); } else { test.add((long) i); } } Dictionary D = new Dictionary(B); ByteBuffer dBuf = D.getByteBuffer(); FSDataInputStream is = TestUtils.getStream(dBuf); RandomAccessByteStream bs = new RandomAccessByteStream(is, 0, dBuf.limit()); for (int i = 0; i < test.size(); i++) { assertEquals(DictionaryOps.getSelect0(bs, 0, i), (long) test.get(i)); } is.close(); } }