generate frequent items sketches for compatibility test
diff --git a/src/test/java/org/apache/datasketches/frequencies/SerDeCompatibilityTest.java b/src/test/java/org/apache/datasketches/frequencies/SerDeCompatibilityTest.java
index a32f95c..025cfb9 100644
--- a/src/test/java/org/apache/datasketches/frequencies/SerDeCompatibilityTest.java
+++ b/src/test/java/org/apache/datasketches/frequencies/SerDeCompatibilityTest.java
@@ -19,8 +19,15 @@
package org.apache.datasketches.frequencies;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import java.io.FileOutputStream;
+
import org.apache.datasketches.common.ArrayOfItemsSerDe;
import org.apache.datasketches.common.ArrayOfLongsSerDe;
+import org.apache.datasketches.common.ArrayOfStringsSerDe;
import org.apache.datasketches.memory.WritableMemory;
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -31,14 +38,14 @@
@Test
public void itemsToLongs() {
- ItemsSketch<Long> sketch1 = new ItemsSketch<>(8);
+ final ItemsSketch<Long> sketch1 = new ItemsSketch<>(8);
sketch1.update(1L);
sketch1.update(2L);
sketch1.update(3L);
sketch1.update(4L);
- byte[] bytes = sketch1.toByteArray(serDe);
- LongsSketch sketch2 = LongsSketch.getInstance(WritableMemory.writableWrap(bytes));
+ final byte[] bytes = sketch1.toByteArray(serDe);
+ final LongsSketch sketch2 = LongsSketch.getInstance(WritableMemory.writableWrap(bytes));
sketch2.update(2L);
sketch2.update(3L);
sketch2.update(2L);
@@ -54,14 +61,14 @@
@Test
public void longsToItems() {
- LongsSketch sketch1 = new LongsSketch(8);
+ final LongsSketch sketch1 = new LongsSketch(8);
sketch1.update(1L);
sketch1.update(2L);
sketch1.update(3L);
sketch1.update(4L);
- byte[] bytes = sketch1.toByteArray();
- ItemsSketch<Long> sketch2 = ItemsSketch.getInstance(WritableMemory.writableWrap(bytes), serDe);
+ final byte[] bytes = sketch1.toByteArray();
+ final ItemsSketch<Long> sketch2 = ItemsSketch.getInstance(WritableMemory.writableWrap(bytes), serDe);
sketch2.update(2L);
sketch2.update(3L);
sketch2.update(2L);
@@ -75,4 +82,40 @@
Assert.assertEquals(sketch2.getEstimate(4L), 1);
}
+ @Test(groups = {"generate"})
+ public void generateBinariesForCompatibilityTestingLongsSketch() throws Exception {
+ final int[] nArr = {0, 1, 10, 100, 1000, 10000, 100000, 1000000};
+ for (int n: nArr) {
+ LongsSketch sketch = new LongsSketch(64);
+ for (int i = 1; i <= n; i++) sketch.update(i);
+ assertTrue(n == 0 ? sketch.isEmpty() : !sketch.isEmpty());
+ if (n > 10) {
+ assertTrue(sketch.getMaximumError() > 0);
+ } else {
+ assertEquals(sketch.getMaximumError(), 0);
+ }
+ try (final FileOutputStream file = new FileOutputStream("frequent_long_n" + n + ".sk")) {
+ file.write(sketch.toByteArray());
+ }
+ }
+ }
+
+ @Test(groups = {"generate"})
+ public void generateBinariesForCompatibilityTestingStringsSketch() throws Exception {
+ final int[] nArr = {0, 1, 10, 100, 1000, 10000, 100000, 1000000};
+ for (int n: nArr) {
+ ItemsSketch<String> sketch = new ItemsSketch<>(64);
+ for (int i = 1; i <= n; i++) sketch.update(Integer.toString(i));
+ assertTrue(n == 0 ? sketch.isEmpty() : !sketch.isEmpty());
+ if (n > 10) {
+ assertTrue(sketch.getMaximumError() > 0);
+ } else {
+ assertEquals(sketch.getMaximumError(), 0);
+ }
+ try (final FileOutputStream file = new FileOutputStream("frequent_string_n" + n + ".sk")) {
+ file.write(sketch.toByteArray(new ArrayOfStringsSerDe()));
+ }
+ }
+ }
+
}