### Question:
BitArray { public void fromByteBuffer(ByteBuffer byteBuffer) { clear(); int i = 0; while(i < data.length && byteBuffer.hasRemaining()) { data[i] = byteBuffer.get(); i++; } } BitArray(int numBits);  BitArray(byte [] bytes); void set(int idx); boolean get(int idx); void clear(); int bytesLength(); int bitsLength(); byte [] toArray(); void fromByteBuffer(ByteBuffer byteBuffer); String toString();  }### Answer:
@Test public void testFromByteBuffer() { int numBit = 80; BitArray bitArray = new BitArray(numBit); assertEquals(numBit, bitArray.bitsLength()); for (int i = 0; i < numBit; i++) { if((i % 2) == 0){ bitArray.set(i); } } ByteBuffer buffer = ByteBuffer.allocate(bitArray.bytesLength()); buffer.put(bitArray.toArray()); for (int i = 0; i < numBit; i++) { if((i % 2) == 0){ assertTrue(bitArray.get(i)); } else { assertFalse(bitArray.get(i)); } } buffer.rewind(); bitArray.fromByteBuffer(buffer); for (int i = 0; i < numBit; i++) { if((i % 2) == 0){ assertTrue(bitArray.get(i)); } else { assertFalse(bitArray.get(i)); } } }