@Test public void checkUnion7() { final DoublesUnion union = DoublesUnionImpl.heapInstance(16); final DoublesSketch skEst = buildAndLoadQS(32, 64); //other is bigger, est union.update(skEst); println(skEst.toString(true, true)); println(union.toString(true, true)); final DoublesSketch result = union.getResult(); assertEquals(result.getMaxValue(), 64, 0.0); assertEquals(result.getMinValue(), 1.0, 0.0); }
@Test public void checkDirectInstance() { final int k = 128; final int n = 1000; final DoublesUnionBuilder bldr = DoublesUnion.builder(); bldr.setMaxK(k); Assert.assertEquals(bldr.getMaxK(), k); final int bytes = DoublesSketch.getUpdatableStorageBytes(k, n); final byte[] byteArr = new byte[bytes]; final WritableMemory mem = WritableMemory.wrap(byteArr); final DoublesUnion union = bldr.build(mem); assertTrue(union.isEmpty()); assertTrue(union.isDirect()); for (int i = 1; i <= n; i++) { union.update(i); } Assert.assertFalse(union.isEmpty()); final DoublesSketch res = union.getResult(); final double median = res.getQuantile(.5); Assert.assertEquals(median, 500, 10); println(union.toString()); }
@Test public void checkUnion2() { final DoublesSketch qs1 = buildAndLoadQS(256, 1000).compact(); final DoublesSketch qs2 = buildAndLoadQS(128, 1000); final DoublesUnion union = DoublesUnion.builder().setMaxK(256).build(); //virgin 256 assertEquals(union.getEffectiveK(), 256); union.update(qs1); final DoublesSketch res1 = union.getResult(); //println(res1.toString()); assertEquals(res1.getN(), 1000); assertEquals(res1.getK(), 256); union.update(qs2); final DoublesSketch res2 = union.getResult(); assertEquals(res2.getN(), 2000); assertEquals(res2.getK(), 128); assertEquals(union.getEffectiveK(), 128); println(union.toString()); }
@Test public void checkUnion2Direct() { final DoublesSketch qs1 = buildAndLoadDQS(256, 1000); final DoublesSketch qs2 = buildAndLoadDQS(128, 1000); final DoublesUnion union = DoublesUnion.builder().setMaxK(256).build(); //virgin 256 assertEquals(union.getEffectiveK(), 256); union.update(qs1); final DoublesSketch res1 = union.getResult(); //println(res1.toString()); assertEquals(res1.getN(), 1000); assertEquals(res1.getK(), 256); union.update(qs2); final DoublesSketch res2 = union.getResult(); assertEquals(res2.getN(), 2000); assertEquals(res2.getK(), 128); assertEquals(union.getEffectiveK(), 128); println(union.toString()); }
@Test public void checkUpdateMemoryDirect() { final DoublesSketch qs1 = buildAndLoadDQS(256, 1000); final int bytes = qs1.getCompactStorageBytes(); final WritableMemory dstMem = WritableMemory.wrap(new byte[bytes]); qs1.putMemory(dstMem); final Memory srcMem = dstMem; final DoublesUnion union = DoublesUnion.builder().build(); //virgin union.update(srcMem); for (int i = 1000; i < 2000; i++) { union.update(i); } final DoublesSketch qs2 = union.getResult(); assertEquals(qs2.getMaxValue(), 1999, 0.0); final String s = union.toString(); println(s); //enable printing to see union.reset(); //sets to null }
@Test public void checkUpdateMemory() { final DoublesSketch qs1 = buildAndLoadQS(256, 1000); final int bytes = qs1.getCompactStorageBytes(); final WritableMemory dstMem = WritableMemory.wrap(new byte[bytes]); qs1.putMemory(dstMem); final Memory srcMem = dstMem; final DoublesUnion union = DoublesUnion.builder().build(); //virgin union.update(srcMem); for (int i = 1000; i < 2000; i++) { union.update(i); } final DoublesSketch qs2 = union.getResult(); assertEquals(qs2.getMaxValue(), 1999, 0.0); final String s = union.toString(); println(s); //enable printing to see union.reset(); //sets to null }