Assert.assertEquals(40, ds.getN()); Assert.assertEquals(1.0, ds.getMinValue(), 0); Assert.assertEquals(1.0, ds.getMaxValue(), 0);
Assert.assertEquals(40, ds.getN()); Assert.assertEquals(1.0, ds.getMinValue(), 0); Assert.assertEquals(1.0, ds.getMaxValue(), 0);
Assert.assertEquals(40, ds.getN()); Assert.assertEquals(1.0, ds.getMinValue(), 0); Assert.assertEquals(1.0, ds.getMaxValue(), 0);
Assert.assertEquals(40, ds.getN()); Assert.assertEquals(1.0, ds.getMinValue(), 0); Assert.assertEquals(1.0, ds.getMaxValue(), 0);
Assert.assertEquals(40, ds.getN()); Assert.assertEquals(2.0, ds.getMinValue(), 0); Assert.assertEquals(2.0, ds.getMaxValue(), 0);
@Test public void wrapEmptyCompactSketch() { final CompactDoublesSketch s1 = DoublesSketch.builder().build().compact(); final Memory mem = Memory.wrap(ByteBuffer.wrap(s1.toByteArray()).order(ByteOrder.nativeOrder())); final DoublesSketch s2 = DoublesSketch.wrap(mem); assertTrue(s2.isEmpty()); assertEquals(s2.getN(), 0); assertTrue(Double.isNaN(s2.getMinValue())); assertTrue(Double.isNaN(s2.getMaxValue())); }
@Test public void checkUnionUpdateLogicDirectDownsampled() { final DirectUpdateDoublesSketch qs1 = (DirectUpdateDoublesSketch) buildAndLoadDQS(256, 1000); final DirectUpdateDoublesSketch qs2 = (DirectUpdateDoublesSketch) buildAndLoadDQS(128, 2000); final DoublesSketch result = DoublesUnionImpl.updateLogic(128, qs1, qs2); assertEquals(result.getMaxValue(), 2000.0, 0.0); assertEquals(result.getMinValue(), 1.0, 0.0); assertEquals(result.getN(), 3000); assertEquals(result.getK(), 128); }
@Test public void checkUnion7Direct() { final DoublesUnion union = DoublesUnionImpl.heapInstance(16); final DoublesSketch skEst = buildAndLoadDQS(32, 64); //other is bigger, est union.update(skEst); final DoublesSketch result = union.getResult(); assertEquals(result.getMaxValue(), 64, 0.0); assertEquals(result.getMinValue(), 1.0, 0.0); // println(skEst.toString(true, true)); // println(union.toString(true, true)); }
@Test public void heapToDirect() { UpdateDoublesSketch heapSketch = DoublesSketch.builder().build(); for (int i = 0; i < 1000; i++) { heapSketch.update(i); } DoublesSketch directSketch = DoublesSketch.wrap(WritableMemory.wrap(heapSketch.toByteArray(false))); assertEquals(directSketch.getMinValue(), 0.0); assertEquals(directSketch.getMaxValue(), 999.0); assertEquals(directSketch.getQuantile(0.5), 500.0, 4.0); }
@Test public void checkUnionUpdateLogic() { final HeapUpdateDoublesSketch qs1 = null; final HeapUpdateDoublesSketch qs2 = (HeapUpdateDoublesSketch) buildAndLoadQS(256, 0); DoublesUnionImpl.updateLogic(256, qs1, qs2); //null, empty DoublesUnionImpl.updateLogic(256, qs2, qs1); //empty, null qs2.update(1); //no longer empty final DoublesSketch result = DoublesUnionImpl.updateLogic(256, qs2, qs1); //valid, null assertEquals(result.getMaxValue(), result.getMinValue(), 0.0); }
@Test public void checkUnionUpdateLogicDirect() { final HeapUpdateDoublesSketch qs1 = null; final DirectUpdateDoublesSketch qs2 = (DirectUpdateDoublesSketch) buildAndLoadDQS(256, 0); DoublesUnionImpl.updateLogic(256, qs1, qs2); //null, empty DoublesUnionImpl.updateLogic(256, qs2, qs1); //empty, null qs2.update(1); //no longer empty final DoublesSketch result = DoublesUnionImpl.updateLogic(256, qs2, qs1); //valid, null assertEquals(result.getMaxValue(), result.getMinValue(), 0.0); }
@Test public void heapifyCompactSketch() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); Memory mem = Memory.wrap(s1.toByteArray(true)); DoublesSketch s2 = DoublesSketch.heapify(mem); Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 2.0); }
@Test public void heapifySparseSketch() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); Memory mem = Memory.wrap(s1.toByteArray(false)); DoublesSketch s2 = DoublesSketch.heapify(mem); Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 2.0); }
@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 wrapCompactSketch() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); //Memory mem = Memory.wrap(ByteBuffer.wrap(s1.compact().toByteArray()) // .asReadOnlyBuffer().order(ByteOrder.nativeOrder()));); final Memory mem = Memory.wrap(s1.compact().toByteArray()); final DoublesSketch s2 = DoublesSketch.wrap(mem); // compact, so this is ok Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 2.0); Assert.assertEquals(s2.getN(), 2); }
@Test public void heapifyUnionFromSparse() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); Memory mem = Memory.wrap(s1.toByteArray(false)); DoublesUnion u = DoublesUnion.heapify(mem); u.update(3); DoublesSketch s2 = u.getResult(); Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 3.0); }
@Test public void checkUnion6Direct() { final int k1 = 8; final int n1 = 2 * k1; //16 final int k2 = 16; final int n2 = 2 * k2; //32 final DoublesSketch sk1 = buildAndLoadDQS(k1, n1, 0); final DoublesSketch sk2 = buildAndLoadDQS(k2, n2, n1); final DoublesUnion union = DoublesUnionImpl.heapifyInstance(sk1); union.update(sk2); final DoublesSketch result = union.getResult(); assertEquals(result.getMaxValue(), n1 + n2, 0.0); assertEquals(result.getMinValue(), 1.0, 0.0); println("\nFinal" + union.getResult().toString(true, true)); }
@Test public void heapifyUnionFromCompact() { UpdateDoublesSketch s1 = DoublesSketch.builder().build(); s1.update(1); s1.update(2); Memory mem = Memory.wrap(s1.toByteArray(true)); DoublesUnion u = DoublesUnion.heapify(mem); u.update(3); DoublesSketch s2 = u.getResult(); Assert.assertEquals(s2.getMinValue(), 1.0); Assert.assertEquals(s2.getMaxValue(), 3.0); }
@Test public void checkPutMemory() { UpdateDoublesSketch qs1 = DoublesSketch.builder().build(); //k = 128 for (int i=0; i<1000; i++) { qs1.update(i); } int bytes = qs1.getUpdatableStorageBytes(); WritableMemory dstMem = WritableMemory.wrap(new byte[bytes]); qs1.putMemory(dstMem, false); Memory srcMem = dstMem; DoublesSketch qs2 = DoublesSketch.heapify(srcMem); assertEquals(qs1.getMinValue(), qs2.getMinValue(), 0.0); assertEquals(qs1.getMaxValue(), qs2.getMaxValue(), 0.0); }
@Test public void checkUnionUpdateLogic2() { DoublesSketch qs1 = DoublesSketch.builder().build(); final DoublesSketch qs2 = DoublesSketch.builder().build(); final DoublesUnion union = DoublesUnion.builder().build(); union.update(qs1); union.update(qs2); //case 5 qs1 = buildAndLoadQS(128, 1000); union.update(qs1); union.update(qs2); //case 9 final DoublesSketch result = union.getResult(); //println(union.toString(true, true)); assertEquals(result.getMaxValue(), 1000.0, 0.0); assertEquals(result.getMinValue(), 1.0, 0.0); }