@Test public void testSerialization4() throws IOException, ClassNotFoundException { final MutableRoaringBitmap rr = new MutableRoaringBitmap(); for (int k = 1; k <= 10000000; k += 10) rr.add(k); final ByteArrayOutputStream bos = new ByteArrayOutputStream(); // Note: you could use a file output steam instead of // ByteArrayOutputStream int howmuch = rr.serializedSizeInBytes(); final DataOutputStream oo = new DataOutputStream(bos); rr.serialize(oo); oo.close(); Assert.assertEquals(howmuch, bos.toByteArray().length); final MutableRoaringBitmap rrback = new MutableRoaringBitmap(); final ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); rrback.deserialize(new DataInputStream(bis)); Assert.assertEquals(rr.getCardinality(), rrback.getCardinality()); Assert.assertTrue(rr.equals(rrback)); }
@Test public void testContains() throws IOException { System.out.println("test contains"); MutableRoaringBitmap rbm1 = new MutableRoaringBitmap(); for (int k = 0; k < 1000; ++k) { rbm1.add(17 * k); } for (int k = 0; k < 17 * 1000; ++k) { Assert.assertTrue(rbm1.contains(k) == (k / 17 * 17 == k)); } ByteArrayOutputStream bos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(bos); rbm1.serialize(dos); dos.close(); ByteBuffer bb = ByteBuffer.allocateDirect(bos.size()); bb.put(bos.toByteArray()); bb.flip(); ImmutableRoaringBitmap rrback1 = new ImmutableRoaringBitmap(bb); for (int k = 0; k < 17 * 1000; ++k) { Assert.assertTrue(rrback1.contains(k) == (k / 17 * 17 == k)); } }