This is an automated email from the ASF dual-hosted git repository.

leerho pushed a commit to branch methods_to_compute_partition_limits
in repository https://gitbox.apache.org/repos/asf/datasketches-java.git

commit 30a813d50fa267e0ff73afe0bc1dbaffc7e299e9
Author: Lee Rhodes <[email protected]>
AuthorDate: Fri Apr 12 12:36:34 2024 -0700

    Added tests for new partition limits
---
 .../quantilescommon/PartitionBoundariesTest.java   | 42 ++++++++++++++++++++--
 1 file changed, 39 insertions(+), 3 deletions(-)

diff --git 
a/src/test/java/org/apache/datasketches/quantilescommon/PartitionBoundariesTest.java
 
b/src/test/java/org/apache/datasketches/quantilescommon/PartitionBoundariesTest.java
index 1849c04f..abbce503 100644
--- 
a/src/test/java/org/apache/datasketches/quantilescommon/PartitionBoundariesTest.java
+++ 
b/src/test/java/org/apache/datasketches/quantilescommon/PartitionBoundariesTest.java
@@ -28,6 +28,7 @@ import static org.testng.Assert.assertEquals;
 import java.util.Comparator;
 
 import org.apache.datasketches.common.ArrayOfStringsSerDe;
+import org.apache.datasketches.common.SketchesArgumentException;
 import org.apache.datasketches.kll.KllItemsSketch;
 import org.apache.datasketches.quantiles.ItemsSketch;
 import org.testng.annotations.Test;
@@ -49,6 +50,7 @@ public class PartitionBoundariesTest {
   private static String rowhdrfmt2= "%5s %12s %12s %12s\n";
   private static String rowdfmt2  = "%5d %12.8f %12d %12s\n";
 
+  //@Test //visual check only. set enablePrinting = true to view.
   public void checkSkewWithClassic() {
     int n = 2050;
     int k = 1 << 15;
@@ -88,7 +90,7 @@ public class PartitionBoundariesTest {
     }
   }
 
-  @Test
+  //@Test //visual check only. set enablePrinting = true to view.
   public void checkSkewWithKll() {
     int n = 2050;
     int k = 1 << 15;
@@ -159,8 +161,8 @@ public class PartitionBoundariesTest {
   }
 
   /**
-   * Because both Kll and Classic items sketches use the same Sorted View class
-   * this test applies to both. The only difference is a different normalized 
error given the same k.
+   * Because both Kll and Classic items sketches use the same Sorted View 
class.
+   * This test applies to both.
    */
   @Test
   public void checkSimpleEndsAdjustment() {
@@ -194,6 +196,40 @@ public class PartitionBoundariesTest {
     assertEquals(minItm, "1");
   }
 
+  @Test(expectedExceptions = SketchesArgumentException.class)
+  public void checkSketchPartitionLimits() {
+    final long totalN = 1_000_000;
+    final Comparator<String> comparator = Comparator.naturalOrder();
+    final ArrayOfStringsSerDe serDe = new ArrayOfStringsSerDe();
+    final KllItemsSketch<String> sk = 
KllItemsSketch.newHeapInstance(comparator, serDe);
+    final int d = digits(totalN);
+    for (int i = 1; i <= totalN; i++) {
+      sk.update(getString(i, d));
+    }
+    final int numLimit = sk.getMaxPartitions();
+    final int ret = sk.getNumRetained();
+    println("ret: " + ret + ", numLimit " + numLimit);
+    @SuppressWarnings("unused")
+    GenericPartitionBoundaries<String> gpb = 
sk.getPartitionBoundariesFromNumParts(numLimit + 1);
+  }
+
+  @Test(expectedExceptions = SketchesArgumentException.class)
+  public void checkSketchPartitionLimits2() {
+    final long totalN = 1_000_000;
+    final Comparator<String> comparator = Comparator.naturalOrder();
+    final ArrayOfStringsSerDe serDe = new ArrayOfStringsSerDe();
+    final KllItemsSketch<String> sk = 
KllItemsSketch.newHeapInstance(comparator, serDe);
+    final int d = digits(totalN);
+    for (int i = 1; i <= totalN; i++) {
+      sk.update(getString(i, d));
+    }
+    final long sizeLimit= sk.getMinPartitionSizeItems();
+
+    println("Min Size Limit: " + sizeLimit);
+    @SuppressWarnings("unused")
+    GenericPartitionBoundaries<String> gpb = 
sk.getPartitionBoundariesFromPartSize(sizeLimit - 1);
+  }
+
   @Test
   public void printlnTest() {
     println("PRINTING: " + this.getClass().getName());


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to