@Test public void checkPutCombinedBuffer() { final int k = PreambleUtil.DEFAULT_K; final int cap = 32 + ((2 * k) << 3); WritableMemory mem = WritableMemory.wrap(new byte[cap]); final UpdateDoublesSketch qs = DoublesSketch.builder().setK(k).build(mem); mem = qs.getMemory(); assertEquals(mem.getCapacity(), cap); assertTrue(qs.isEmpty()); final int n = 16; final double[] data = new double[n]; for (int i = 0; i < n; ++i) { data[i] = i + 1; } qs.putBaseBufferCount(n); qs.putN(n); qs.putCombinedBuffer(data); final double[] combBuf = qs.getCombinedBuffer(); assertEquals(combBuf, data); // shouldn't have changed min/max values assertTrue(Double.isNaN(qs.getMinValue())); assertTrue(Double.isNaN(qs.getMaxValue())); }
@Test public void checkMisc() { int k = PreambleUtil.DEFAULT_K; int n = 48; int cap = 32 + ((2 * k) << 3); WritableMemory mem = WritableMemory.wrap(new byte[cap]); UpdateDoublesSketch qs = DoublesSketch.builder().setK(k).build(mem); mem = qs.getMemory(); assertEquals(mem.getCapacity(), cap); double[] combBuf = qs.getCombinedBuffer(); assertEquals(combBuf.length, 2 * k); qs = buildAndLoadDQS(k, n); qs.update(Double.NaN); int n2 = (int)qs.getN(); assertEquals(n2, n); combBuf = qs.getCombinedBuffer(); assertEquals(combBuf.length, ceilingPowerOf2(n)); // since n < k println(qs.toString(true, true)); qs.reset(); assertEquals(qs.getN(), 0); qs.putBaseBufferCount(0); }