package org.yamcs.utils; import org.junit.Test; import org.yamcs.parameterarchive.BitBuffer; import static org.junit.Assert.*; import java.nio.ByteBuffer; public class TestBitBuffer { @Test public void tesSingleBit1() { ByteBuffer bb = ByteBuffer.allocate(16); BitWriter bw =new BitWriter(bb); for(int i=0; i<128; i++) { bw.write(i, 1); } assertEquals(0x5555555555555555L, bb.getLong(0)); bw.flush(); bb.rewind(); BitReader br = new BitReader(bb); for(int i=0; i<128; i++) { assertEquals(i&1, br.read(1)); } } @Test public void tesVariableBits() { ByteBuffer bb = ByteBuffer.allocate(32); BitWriter bw = new BitWriter(bb); for(int i=0; i<50; i++) { bw.write(1, 2); bw.write(3, 3); } bw.flush(); assertEquals(0x5ad6b5ad6b5ad6b5L, bb.getLong(0)); bb.rewind(); BitReader br = new BitReader(bb); for(int i=0; i<50; i++) { assertEquals(1, br.read(2)); assertEquals(3, br.read(3)); } } @Test public void tesV32Bits() { ByteBuffer bb = ByteBuffer.allocate(32); BitWriter bw = new BitWriter(bb); bw.write(0x01020304, 32); bw.flush(); bb.rewind(); BitReader br = new BitReader(bb); assertEquals(0x01020304, br.read(32)); } }