use of org.apache.datasketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class ItemsUnionTest method checkToByteArray.
@Test
public void checkToByteArray() {
final int k = 32;
final ArrayOfLongsSerDe serDe = new ArrayOfLongsSerDe();
ItemsUnion<Long> union = ItemsUnion.getInstance(k, Comparator.naturalOrder());
byte[] bytesOut = union.toByteArray(serDe);
Assert.assertEquals(bytesOut.length, 8);
Assert.assertTrue(union.isEmpty());
final byte[] byteArr = buildIS(k, (2 * k) + 5).toByteArray(serDe);
final Memory mem = Memory.wrap(byteArr);
union = ItemsUnion.getInstance(mem, Comparator.naturalOrder(), serDe);
bytesOut = union.toByteArray(serDe);
Assert.assertEquals(bytesOut.length, byteArr.length);
// assumes consistent internal use of toByteArray()
Assert.assertEquals(bytesOut, byteArr);
}
use of org.apache.datasketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class VarOptItemsSketchTest method checkUnderFullSketchSerialization.
@Test
public void checkUnderFullSketchSerialization() {
final VarOptItemsSketch<Long> sketch = VarOptItemsSketch.newInstance(2048);
for (long i = 0; i < 10; ++i) {
sketch.update(i, 1.0);
}
assertEquals(sketch.getNumSamples(), 10);
final byte[] bytes = sketch.toByteArray(new ArrayOfLongsSerDe());
final Memory mem = Memory.wrap(bytes);
// ensure correct number of preLongs
assertEquals(PreambleUtil.extractPreLongs(mem), PreambleUtil.VO_PRELONGS_WARMUP);
final VarOptItemsSketch<Long> rebuilt = VarOptItemsSketch.heapify(mem, new ArrayOfLongsSerDe());
checkIfEqual(rebuilt, sketch);
}
use of org.apache.datasketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class VarOptItemsSketchTest method checkBadFamily.
@Test(expectedExceptions = SketchesArgumentException.class)
public void checkBadFamily() {
final VarOptItemsSketch<Long> sketch = getUnweightedLongsVIS(32, 16);
final byte[] bytes = sketch.toByteArray(new ArrayOfLongsSerDe());
final WritableMemory mem = WritableMemory.writableWrap(bytes);
// corrupt the family ID
mem.putByte(FAMILY_BYTE, (byte) 0);
VarOptItemsSketch.heapify(mem, new ArrayOfLongsSerDe());
fail();
}
use of org.apache.datasketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class VarOptItemsSketchTest method checkBadSerVer.
@Test(expectedExceptions = SketchesArgumentException.class)
public void checkBadSerVer() {
final VarOptItemsSketch<Long> sketch = getUnweightedLongsVIS(16, 16);
final byte[] bytes = sketch.toByteArray(new ArrayOfLongsSerDe());
final WritableMemory mem = WritableMemory.writableWrap(bytes);
// corrupt the serialization version
mem.putByte(SER_VER_BYTE, (byte) 0);
VarOptItemsSketch.heapify(mem, new ArrayOfLongsSerDe());
fail();
}
use of org.apache.datasketches.ArrayOfLongsSerDe in project sketches-core by DataSketches.
the class VarOptItemsSketchTest method checkBadPreLongs.
@Test
public void checkBadPreLongs() {
final VarOptItemsSketch<Long> sketch = getUnweightedLongsVIS(32, 33);
final byte[] bytes = sketch.toByteArray(new ArrayOfLongsSerDe());
final WritableMemory mem = WritableMemory.writableWrap(bytes);
// corrupt the preLongs count to 0
mem.putByte(PREAMBLE_LONGS_BYTE, (byte) (Family.VAROPT.getMinPreLongs() - 1));
try {
VarOptItemsSketch.heapify(mem, new ArrayOfLongsSerDe());
fail();
} catch (final SketchesArgumentException e) {
// expected
}
// corrupt the preLongs count to 2
mem.putByte(PREAMBLE_LONGS_BYTE, (byte) 2);
try {
VarOptItemsSketch.heapify(mem, new ArrayOfLongsSerDe());
fail();
} catch (final SketchesArgumentException e) {
// expected
}
// corrupt the preLongs count to be too large
mem.putByte(PREAMBLE_LONGS_BYTE, (byte) (Family.VAROPT.getMaxPreLongs() + 1));
try {
VarOptItemsSketch.heapify(mem, new ArrayOfLongsSerDe());
fail();
} catch (final SketchesArgumentException e) {
// expected
}
}
Aggregations