You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by le...@apache.org on 2020/07/07 23:37:05 UTC

[incubator-datasketches-java] 02/10: Eliminated two Classes: DirectCompactOrderedSketch and DirectCompactUnorderedSketch.

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

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

commit f421f793d89e7543ced55960fd89738e28dfa98e
Author: Lee Rhodes <le...@users.noreply.github.com>
AuthorDate: Fri Jun 26 17:41:59 2020 -0700

    Eliminated two Classes: DirectCompactOrderedSketch and
    DirectCompactUnorderedSketch.
    
    Replaced with just DirectCompactSketch.
---
 .../datasketches/theta/CompactOperations.java      | 17 ++----
 .../theta/DirectCompactOrderedSketch.java          | 60 ----------------------
 .../datasketches/theta/DirectCompactSketch.java    | 36 ++++++++++++-
 .../theta/DirectCompactUnorderedSketch.java        | 60 ----------------------
 .../datasketches/theta/EmptyCompactSketch.java     |  2 +-
 .../datasketches/theta/SingleItemSketch.java       |  2 +-
 .../java/org/apache/datasketches/theta/Sketch.java |  5 +-
 .../apache/datasketches/theta/UpdateSketch.java    |  3 +-
 .../datasketches/theta/CompactSketchTest.java      | 24 ++++-----
 .../ConcurrentDirectQuickSelectSketchTest.java     |  8 +--
 .../theta/ConcurrentHeapQuickSelectSketchTest.java | 12 ++---
 .../theta/DirectQuickSelectSketchTest.java         |  8 +--
 .../datasketches/theta/HeapAlphaSketchTest.java    |  8 +--
 .../theta/HeapQuickSelectSketchTest.java           |  8 +--
 .../datasketches/theta/SingleItemSketchTest.java   |  6 +--
 .../org/apache/datasketches/theta/SketchTest.java  |  6 ++-
 .../apache/datasketches/theta/UnionImplTest.java   |  6 +--
 17 files changed, 87 insertions(+), 184 deletions(-)

diff --git a/src/main/java/org/apache/datasketches/theta/CompactOperations.java b/src/main/java/org/apache/datasketches/theta/CompactOperations.java
index 6c7067e..882e0e8 100644
--- a/src/main/java/org/apache/datasketches/theta/CompactOperations.java
+++ b/src/main/java/org/apache/datasketches/theta/CompactOperations.java
@@ -91,11 +91,8 @@ final class CompactOperations {
 
       final Memory mem =
           loadCompactMemory(hashArrOut, seedHash, curCount, thetaLong, dstMem, (byte)flags, preLongs);
-      if (dstOrderedOut) {
-        return new DirectCompactOrderedSketch(mem);
-      } else {
-        return new DirectCompactUnorderedSketch(mem);
-      }
+      return new DirectCompactSketch(mem);
+
     } else { //Heap
       if (empty) {
         return EmptyCompactSketch.getInstance();
@@ -159,7 +156,7 @@ final class CompactOperations {
     if (srcEmptyFlag) {
       if (dstMem != null) {
         dstMem.putByteArray(0, EmptyCompactSketch.EMPTY_COMPACT_SKETCH_ARR, 0, 8);
-        return new DirectCompactOrderedSketch(dstMem);
+        return new DirectCompactSketch(dstMem);
       } else {
         return EmptyCompactSketch.getInstance();
       }
@@ -169,7 +166,7 @@ final class CompactOperations {
       final SingleItemSketch sis = new SingleItemSketch(hash, srcSeedHash);
       if (dstMem != null) {
         dstMem.putByteArray(0, sis.toByteArray(),0, 16);
-        return new DirectCompactOrderedSketch(dstMem);
+        return new DirectCompactSketch(dstMem);
       } else { //heap
         return sis;
       }
@@ -191,11 +188,7 @@ final class CompactOperations {
     if (dstMem != null) {
       final Memory tgtMem = loadCompactMemory(hashArr, srcSeedHash, curCount, thetaLong, dstMem,
           (byte)srcFlags, srcPreLongs);
-      if (dstOrderedOut) {
-        return new DirectCompactOrderedSketch(tgtMem);
-      } else {
-        return new DirectCompactUnorderedSketch(tgtMem);
-      }
+      return new DirectCompactSketch(tgtMem);
 
     } else { //heap
       if (dstOrderedOut) {
diff --git a/src/main/java/org/apache/datasketches/theta/DirectCompactOrderedSketch.java b/src/main/java/org/apache/datasketches/theta/DirectCompactOrderedSketch.java
deleted file mode 100644
index e2c9de5..0000000
--- a/src/main/java/org/apache/datasketches/theta/DirectCompactOrderedSketch.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.datasketches.theta;
-
-import static org.apache.datasketches.theta.PreambleUtil.checkMemorySeedHash;
-
-import org.apache.datasketches.memory.Memory;
-
-/**
- * An off-heap (Direct), compact, ordered, read-only sketch.  This sketch can only be associated
- * with a Serialization Version 3 format binary image.
- *
- * <p>This implementation uses data in a given Memory that is owned and managed by the caller.
- * This Memory can be off-heap, which if managed properly will greatly reduce the need for
- * the JVM to perform garbage collection.</p>
- *
- * @author Lee Rhodes
- */
-final class DirectCompactOrderedSketch extends DirectCompactSketch {
-
-  DirectCompactOrderedSketch(final Memory mem) {
-    super(mem);
-  }
-
-  /**
-   * Wraps the given Memory, which must be a SerVer 3, ordered, Compact Sketch image.
-   * Must check the validity of the Memory before calling.
-   * @param srcMem <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>
-   * @param seed The update seed.
-   * <a href="{@docRoot}/resources/dictionary.html#seed">See Update Hash Seed</a>.
-   * @return this sketch
-   */
-  static DirectCompactOrderedSketch wrapInstance(final Memory srcMem, final long seed) {
-    checkMemorySeedHash(srcMem, seed);
-    return new DirectCompactOrderedSketch(srcMem);
-  }
-
-  @Override
-  public boolean isOrdered() {
-    return true;
-  }
-
-}
diff --git a/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java b/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
index 6b65640..a695944 100644
--- a/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/DirectCompactSketch.java
@@ -19,7 +19,10 @@
 
 package org.apache.datasketches.theta;
 
+import static org.apache.datasketches.theta.PreambleUtil.ORDERED_FLAG_MASK;
+import static org.apache.datasketches.theta.PreambleUtil.checkMemorySeedHash;
 import static org.apache.datasketches.theta.PreambleUtil.extractCurCount;
+import static org.apache.datasketches.theta.PreambleUtil.extractFlags;
 import static org.apache.datasketches.theta.PreambleUtil.extractPreLongs;
 import static org.apache.datasketches.theta.PreambleUtil.extractSeedHash;
 import static org.apache.datasketches.theta.PreambleUtil.extractThetaLong;
@@ -29,17 +32,41 @@ import org.apache.datasketches.memory.Memory;
 import org.apache.datasketches.memory.WritableMemory;
 
 /**
- * Parent class of the Direct Compact Sketches.
+ * An off-heap (Direct), compact, read-only sketch. The internal hash array can be either ordered
+ * or unordered.
+ *
+ * <p>This sketch can only be associated with a Serialization Version 3 format binary image.</p>
+ *
+ * <p>This implementation uses data in a given Memory that is owned and managed by the caller.
+ * This Memory can be off-heap, which if managed properly will greatly reduce the need for
+ * the JVM to perform garbage collection.</p>
  *
  * @author Lee Rhodes
  */
-abstract class DirectCompactSketch extends CompactSketch {
+class DirectCompactSketch extends CompactSketch {
   final Memory mem_;
 
+  /**
+   * Construct this sketch with the given memory.
+   * @param mem Read-only Memory object with the order bit properly set.
+   */
   DirectCompactSketch(final Memory mem) {
     mem_ = mem;
   }
 
+  /**
+   * Wraps the given Memory, which must be a SerVer 3, ordered, CompactSketch image.
+   * Must check the validity of the Memory before calling. The order bit must be set properly.
+   * @param srcMem <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>
+   * @param seed The update seed.
+   * <a href="{@docRoot}/resources/dictionary.html#seed">See Update Hash Seed</a>.
+   * @return this sketch
+   */
+  static DirectCompactSketch wrapInstance(final Memory srcMem, final long seed) {
+    checkMemorySeedHash(srcMem, seed);
+    return new DirectCompactSketch(srcMem);
+  }
+
   //Sketch
 
   @Override
@@ -102,6 +129,11 @@ abstract class DirectCompactSketch extends CompactSketch {
   }
 
   @Override
+  public boolean isOrdered() {
+    return (extractFlags(mem_) & ORDERED_FLAG_MASK) > 0;
+  }
+
+  @Override
   public boolean isSameResource(final Memory that) {
     return mem_.isSameResource(that);
   }
diff --git a/src/main/java/org/apache/datasketches/theta/DirectCompactUnorderedSketch.java b/src/main/java/org/apache/datasketches/theta/DirectCompactUnorderedSketch.java
deleted file mode 100644
index 15b4433..0000000
--- a/src/main/java/org/apache/datasketches/theta/DirectCompactUnorderedSketch.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.datasketches.theta;
-
-import static org.apache.datasketches.theta.PreambleUtil.checkMemorySeedHash;
-
-import org.apache.datasketches.memory.Memory;
-
-/**
- * An off-heap (Direct), compact, unordered, read-only sketch.  This sketch can only be associated
- * with a Serialization Version 3 format binary image.
- *
- * <p>This implementation uses data in a given Memory that is owned and managed by the caller.
- * This Memory can be off-heap, which if managed properly will greatly reduce the need for
- * the JVM to perform garbage collection.</p>
- *
- * @author Lee Rhodes
- */
-final class DirectCompactUnorderedSketch extends DirectCompactSketch {
-
-  DirectCompactUnorderedSketch(final Memory mem) {
-    super(mem);
-  }
-
-  /**
-   * Wraps the given Memory, which must be a SerVer 3, unordered, Compact Sketch image.
-   * Must check the validity of the Memory before calling.
-   * @param srcMem <a href="{@docRoot}/resources/dictionary.html#mem">See Memory</a>
-   * @param seed The update seed.
-   * <a href="{@docRoot}/resources/dictionary.html#seed">See Update Hash Seed</a>.
-   * @return this sketch
-   */
-  static DirectCompactUnorderedSketch wrapInstance(final Memory srcMem, final long seed) {
-    checkMemorySeedHash(srcMem, seed);
-    return new DirectCompactUnorderedSketch(srcMem);
-  }
-
-  @Override
-  public boolean isOrdered() {
-    return false;
-  }
-
-}
diff --git a/src/main/java/org/apache/datasketches/theta/EmptyCompactSketch.java b/src/main/java/org/apache/datasketches/theta/EmptyCompactSketch.java
index 666a9cd..9993673 100644
--- a/src/main/java/org/apache/datasketches/theta/EmptyCompactSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/EmptyCompactSketch.java
@@ -70,7 +70,7 @@ final class EmptyCompactSketch extends CompactSketch {
   // The hashSeed is ignored and set == 0.
   public CompactSketch compact(final boolean dstOrdered, final WritableMemory wmem) {
     wmem.putByteArray(0, EMPTY_COMPACT_SKETCH_ARR, 0, 8);
-    return new DirectCompactOrderedSketch(wmem);
+    return new DirectCompactSketch(wmem);
   }
 
   //static
diff --git a/src/main/java/org/apache/datasketches/theta/SingleItemSketch.java b/src/main/java/org/apache/datasketches/theta/SingleItemSketch.java
index 5356dbc..512c81c 100644
--- a/src/main/java/org/apache/datasketches/theta/SingleItemSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/SingleItemSketch.java
@@ -110,7 +110,7 @@ final class SingleItemSketch extends CompactSketch {
     else {
       dstMem.putLong(0, pre0_);
       dstMem.putLong(8, hash_);
-      return new DirectCompactOrderedSketch(dstMem);
+      return new DirectCompactSketch(dstMem);
     }
   }
 
diff --git a/src/main/java/org/apache/datasketches/theta/Sketch.java b/src/main/java/org/apache/datasketches/theta/Sketch.java
index 42f4724..b8c7bd7 100644
--- a/src/main/java/org/apache/datasketches/theta/Sketch.java
+++ b/src/main/java/org/apache/datasketches/theta/Sketch.java
@@ -153,7 +153,6 @@ public abstract class Sketch {
           }
           //not empty & not singleItem
           final int flags = srcMem.getByte(FLAGS_BYTE);
-          final boolean orderedFlag = (flags & ORDERED_FLAG_MASK) > 0;
           final boolean compactFlag = (flags & COMPACT_FLAG_MASK) > 0;
           if (!compactFlag) {
             throw new SketchesArgumentException(
@@ -164,9 +163,7 @@ public abstract class Sketch {
             throw new SketchesArgumentException(
                 "Corrupted: COMPACT family sketch image must have Read-Only flag set");
           }
-          return orderedFlag
-              ? DirectCompactOrderedSketch.wrapInstance(srcMem, seed)
-              : DirectCompactUnorderedSketch.wrapInstance(srcMem, seed);
+          return DirectCompactSketch.wrapInstance(srcMem, seed);
         } //end of serVer 3
         else if (serVer == 1) {
           return ForwardCompatibility.heapify1to3(srcMem, seed);
diff --git a/src/main/java/org/apache/datasketches/theta/UpdateSketch.java b/src/main/java/org/apache/datasketches/theta/UpdateSketch.java
index 686789d..5a14b6e 100644
--- a/src/main/java/org/apache/datasketches/theta/UpdateSketch.java
+++ b/src/main/java/org/apache/datasketches/theta/UpdateSketch.java
@@ -223,12 +223,11 @@ public abstract class UpdateSketch extends Sketch {
     if (ordered) {
       final byte flags = (byte)(READ_ONLY_FLAG_MASK | COMPACT_FLAG_MASK | ORDERED_FLAG_MASK);
       CompactOperations.loadCompactMemory(cacheOut, seedHash, curCount, thetaLong, dstMem, flags, preLongs);
-      return new DirectCompactOrderedSketch(dstMem);
     } else {
       final byte flags = (byte)(READ_ONLY_FLAG_MASK | COMPACT_FLAG_MASK);
       CompactOperations.loadCompactMemory(cacheOut, seedHash, curCount, thetaLong, dstMem, flags, preLongs);
-      return new DirectCompactUnorderedSketch(dstMem);
     }
+    return new DirectCompactSketch(dstMem);
   }
 
 
diff --git a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
index 199043f..a79f72a 100644
--- a/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/CompactSketchTest.java
@@ -148,9 +148,9 @@ public class CompactSketchTest {
       assertTrue(testSk.hasMemory());
       assertNotNull(testSk.getMemory());
       if (ordered) {
-        assertTrue(testSk instanceof DirectCompactOrderedSketch);
+        assertTrue(testSk.isOrdered());
       } else {
-        assertTrue(testSk instanceof DirectCompactUnorderedSketch);
+        assertFalse(testSk.isOrdered());
       }
       if (refSk.isDirect()) {
         assertTrue(testSk.isDirect());
@@ -237,23 +237,23 @@ public class CompactSketchTest {
     WritableMemory wmem = WritableMemory.allocate(16);
     csko = sk.compact(true, wmem); //empty, direct, ordered
     //ClassType, Count, Bytes, Compact, Empty, Direct, Memory, Ordered, Estimation
-    state = new State("DirectCompactOrderedSketch", 0, 8, true, true, false, true, true, false);
+    state = new State("DirectCompactSketch", 0, 8, true, true, false, true, true, false);
     state.check(csko);
 
     wmem = WritableMemory.allocate(16);
     csku = sk.compact(false, wmem); //empty, direct, unordered
-    state = new State("DirectCompactOrderedSketch", 0, 8, true, true, false, true, true, false);
+    state = new State("DirectCompactSketch", 0, 8, true, true, false, true, true, false);
     state.check(csku);
 
     sk.update(1);
     wmem = WritableMemory.allocate(16);
     csko = sk.compact(true, wmem); //Single, direct, ordered
-    state = new State("DirectCompactOrderedSketch", 1, 16, true, false, false, true, true, false);
+    state = new State("DirectCompactSketch", 1, 16, true, false, false, true, true, false);
     state.check(csko);
 
     wmem = WritableMemory.allocate(16);
     csku = sk.compact(false, wmem); //Single, direct, unordered
-    state = new State("DirectCompactOrderedSketch", 1, 16, true, false, false, true, true, false);
+    state = new State("DirectCompactSketch", 1, 16, true, false, false, true, true, false);
     state.check(csku);
 
     CompactSketch csk2o; //ordered
@@ -277,24 +277,24 @@ public class CompactSketchTest {
 
     wmem = WritableMemory.allocate(16);
     csk2o = csku.compact(true, wmem);
-    state.classType = "DirectCompactOrderedSketch";
+    state.classType = "DirectCompactSketch";
     state.memory = true;
     state.check(csk2o);
 
     wmem = WritableMemory.allocate(16);
     csk2u = csku.compact(false, wmem);
-    state.classType = "DirectCompactOrderedSketch";
+    state.classType = "DirectCompactSketch";
     state.check(csk2u);
 
     wmem = WritableMemory.allocate(16);
     csk2o = csko.compact(true, wmem);
-    state.classType = "DirectCompactOrderedSketch";
+    state.classType = "DirectCompactSketch";
     state.memory = true;
     state.check(csk2o);
 
     wmem = WritableMemory.allocate(16);
     csk2u = csko.compact(false, wmem);
-    state.classType = "DirectCompactOrderedSketch";
+    state.classType = "DirectCompactSketch";
     state.check(csk2u);
   }
 
@@ -313,8 +313,8 @@ public class CompactSketchTest {
   public void checkHeapifyEmptySketch() {
     UpdateSketch sk = Sketches.updateSketchBuilder().build();
     WritableMemory wmem = WritableMemory.allocate(16); //empty, but extra bytes
-    CompactSketch csk = sk.compact(false, wmem);
-    assertTrue(csk instanceof DirectCompactOrderedSketch);
+    CompactSketch csk = sk.compact(false, wmem); //ignores order because it is empty
+    assertTrue(csk instanceof DirectCompactSketch);
     Sketch csk2 = Sketch.heapify(wmem);
     assertTrue(csk2 instanceof EmptyCompactSketch);
   }
diff --git a/src/test/java/org/apache/datasketches/theta/ConcurrentDirectQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/ConcurrentDirectQuickSelectSketchTest.java
index 3802dfd..db69dd7 100644
--- a/src/test/java/org/apache/datasketches/theta/ConcurrentDirectQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/ConcurrentDirectQuickSelectSketchTest.java
@@ -393,7 +393,7 @@ public class ConcurrentDirectQuickSelectSketchTest {
       assertEquals(csk.getUpperBound(2), localUB);
       assertFalse(csk.isEmpty());
       assertEquals(csk.isEstimationMode(), estimating);
-      assertEquals(csk.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+      assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch");
 
       mem2.clear();
       csk = shared.compact(true, mem2);
@@ -402,7 +402,7 @@ public class ConcurrentDirectQuickSelectSketchTest {
       assertEquals(csk.getUpperBound(2), localUB);
       assertFalse(csk.isEmpty());
       assertEquals(csk.isEstimationMode(), estimating);
-      assertEquals(csk.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+      assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch");
       csk.toString(false, true, 0, false);
     }
   }
@@ -438,7 +438,7 @@ public class ConcurrentDirectQuickSelectSketchTest {
       assertEquals(csk2.getUpperBound(2), localUB);
       assertTrue(csk2.isEmpty());
       assertFalse(csk2.isEstimationMode());
-      assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+      assertTrue(csk2.isOrdered());
       CompactSketch csk3 = shared.compact(true, mem2);
       csk3.toString(false, true, 0, false);
       csk3.toString();
@@ -447,7 +447,7 @@ public class ConcurrentDirectQuickSelectSketchTest {
       assertEquals(csk3.getUpperBound(2), localUB);
       assertTrue(csk3.isEmpty());
       assertFalse(csk3.isEstimationMode());
-      assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+      assertTrue(csk2.isOrdered());
     }
   }
 
diff --git a/src/test/java/org/apache/datasketches/theta/ConcurrentHeapQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/ConcurrentHeapQuickSelectSketchTest.java
index 8ae2d89..21b580b 100644
--- a/src/test/java/org/apache/datasketches/theta/ConcurrentHeapQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/ConcurrentHeapQuickSelectSketchTest.java
@@ -334,7 +334,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
     assertEquals(comp3.isEmpty(), false);
     assertEquals(comp3.isEstimationMode(), estimating);
     assertEquals(comp3.getCurrentBytes(true), localCompBytes);
-    assertEquals(comp3.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+    assertEquals(comp3.getClass().getSimpleName(), "DirectCompactSketch");
 
     mem2.clear();
     comp4 = shared.compact(true, mem2);
@@ -345,7 +345,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
     assertEquals(comp4.isEmpty(), false);
     assertEquals(comp4.isEstimationMode(), estimating);
     assertEquals(comp4.getCurrentBytes(true), localCompBytes);
-    assertEquals(comp4.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+    assertEquals(comp4.getClass().getSimpleName(), "DirectCompactSketch");
     comp4.toString(false, true, 0, false);
   }
 
@@ -381,7 +381,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
     assertEquals(csk2.getUpperBound(2), localUB);
     assertEquals(csk2.isEmpty(), true);
     assertEquals(csk2.isEstimationMode(), estimating);
-    assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+    assertTrue(csk2.isOrdered());
 
     CompactSketch csk3 = shared.compact(true, mem2);
     csk3.toString(false, true, 0, false);
@@ -391,7 +391,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
     assertEquals(csk3.getUpperBound(2), localUB);
     assertEquals(csk3.isEmpty(), true);
     assertEquals(csk3.isEstimationMode(), estimating);
-    assertTrue(csk3 instanceof DirectCompactOrderedSketch);
+    assertTrue(csk3.isOrdered());
   }
 
   @Test
@@ -593,7 +593,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
     assertEquals(csk2.getUpperBound(2), uskUB);
     assertTrue(csk2.isEmpty());
     assertFalse(csk2.isEstimationMode());
-    assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+    assertTrue(csk2.isOrdered());
 
     CompactSketch csk3 = shared.compact(true, mem2);
     csk3.toString(false, true, 0, false);
@@ -603,7 +603,7 @@ public class ConcurrentHeapQuickSelectSketchTest {
     assertEquals(csk3.getUpperBound(2), uskUB);
     assertTrue(csk3.isEmpty());
     assertFalse(csk3.isEstimationMode());
-    assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+    assertTrue(csk2.isOrdered());
   }
 
   @Test(expectedExceptions = SketchesArgumentException.class)
diff --git a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
index 73245e5..56070bc 100644
--- a/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/DirectQuickSelectSketchTest.java
@@ -347,7 +347,7 @@ public class DirectQuickSelectSketchTest {
       assertEquals(csk.getUpperBound(2), uskUB);
       assertEquals(csk.isEmpty(), false);
       assertEquals(csk.isEstimationMode(), estimating);
-      assertEquals(csk.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+      assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch");
 
       mem2.clear();
       csk = usk.compact(true, mem2);
@@ -356,7 +356,7 @@ public class DirectQuickSelectSketchTest {
       assertEquals(csk.getUpperBound(2), uskUB);
       assertEquals(csk.isEmpty(), false);
       assertEquals(csk.isEstimationMode(), estimating);
-      assertEquals(csk.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+      assertEquals(csk.getClass().getSimpleName(), "DirectCompactSketch");
       csk.toString(false, true, 0, false);
     }
   }
@@ -388,7 +388,7 @@ public class DirectQuickSelectSketchTest {
       assertEquals(csk2.getUpperBound(2), uskUB);
       assertEquals(csk2.isEmpty(), true);
       assertEquals(csk2.isEstimationMode(), false);
-      assertEquals(csk2.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+      assertEquals(csk2.getClass().getSimpleName(), "DirectCompactSketch");
 
       CompactSketch csk3 = usk.compact(true, mem2);
       csk3.toString(false, true, 0, false);
@@ -398,7 +398,7 @@ public class DirectQuickSelectSketchTest {
       assertEquals(csk3.getUpperBound(2), uskUB);
       assertEquals(csk3.isEmpty(), true);
       assertEquals(csk3.isEstimationMode(), false);
-      assertEquals(csk3.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+      assertEquals(csk3.getClass().getSimpleName(), "DirectCompactSketch");
     }
   }
 
diff --git a/src/test/java/org/apache/datasketches/theta/HeapAlphaSketchTest.java b/src/test/java/org/apache/datasketches/theta/HeapAlphaSketchTest.java
index 793eb13..12d300a 100644
--- a/src/test/java/org/apache/datasketches/theta/HeapAlphaSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/HeapAlphaSketchTest.java
@@ -280,7 +280,7 @@ public class HeapAlphaSketchTest {
     assertEquals(comp3.isEstimationMode(), estimating);
     assertEquals(comp1bytes, comp3.getCurrentBytes(true)); //flag is not relevant
     assertEquals(comp1curCount, comp3.getRetainedEntries(true)); //flag is not relevant
-    assertEquals(comp3.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+    assertEquals(comp3.getClass().getSimpleName(), "DirectCompactSketch");
 
     mem2.clear();
     comp4 = usk.compact(true, mem2);
@@ -292,7 +292,7 @@ public class HeapAlphaSketchTest {
     assertEquals(comp4.isEstimationMode(), estimating);
     assertEquals(comp1bytes, comp4.getCurrentBytes(true)); //flag is not relevant
     assertEquals(comp1curCount, comp4.getRetainedEntries(true)); //flag is not relevant
-    assertEquals(comp4.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+    assertEquals(comp4.getClass().getSimpleName(), "DirectCompactSketch");
   }
 
   @Test
@@ -321,7 +321,7 @@ public class HeapAlphaSketchTest {
     assertEquals(csk2.getUpperBound(2), uskUB);
     assertEquals(csk2.isEmpty(), true);
     assertEquals(csk2.isEstimationMode(), estimating);
-    assertTrue(csk2 instanceof DirectCompactOrderedSketch);
+    assertTrue(csk2.isOrdered());
 
     CompactSketch csk3 = usk.compact(true, mem2);
     csk3.toString(false, true, 0, false);
@@ -331,7 +331,7 @@ public class HeapAlphaSketchTest {
     assertEquals(csk3.getUpperBound(2), uskUB);
     assertEquals(csk3.isEmpty(), true);
     assertEquals(csk3.isEstimationMode(), estimating);
-    assertTrue(csk3 instanceof DirectCompactOrderedSketch);
+    assertTrue(csk3.isOrdered());
   }
 
   @Test
diff --git a/src/test/java/org/apache/datasketches/theta/HeapQuickSelectSketchTest.java b/src/test/java/org/apache/datasketches/theta/HeapQuickSelectSketchTest.java
index fcec52b..a75cb9a 100644
--- a/src/test/java/org/apache/datasketches/theta/HeapQuickSelectSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/HeapQuickSelectSketchTest.java
@@ -274,7 +274,7 @@ public class HeapQuickSelectSketchTest {
     assertEquals(comp3.isEmpty(), false);
     assertEquals(comp3.isEstimationMode(), estimating);
     assertEquals(comp3.getCurrentBytes(true), uskCompBytes);
-    assertEquals(comp3.getClass().getSimpleName(), "DirectCompactUnorderedSketch");
+    assertEquals(comp3.getClass().getSimpleName(), "DirectCompactSketch");
 
     mem2.clear();
     comp4 = usk.compact(true, mem2);
@@ -285,7 +285,7 @@ public class HeapQuickSelectSketchTest {
     assertEquals(comp4.isEmpty(), false);
     assertEquals(comp4.isEstimationMode(), estimating);
     assertEquals(comp4.getCurrentBytes(true), uskCompBytes);
-    assertEquals(comp4.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+    assertEquals(comp4.getClass().getSimpleName(), "DirectCompactSketch");
     comp4.toString(false, true, 0, false);
   }
 
@@ -318,7 +318,7 @@ public class HeapQuickSelectSketchTest {
     assertEquals(csk2.getUpperBound(2), uskUB);
     assertEquals(csk2.isEmpty(), true);
     assertEquals(csk2.isEstimationMode(), estimating);
-    assertEquals(csk2.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+    assertEquals(csk2.getClass().getSimpleName(), "DirectCompactSketch");
 
     CompactSketch csk3 = usk.compact(true, mem2);
     println(csk3.toString(false, true, 0, false));
@@ -328,7 +328,7 @@ public class HeapQuickSelectSketchTest {
     assertEquals(csk3.getUpperBound(2), uskUB);
     assertEquals(csk3.isEmpty(), true);
     assertEquals(csk3.isEstimationMode(), estimating);
-    assertEquals(csk3.getClass().getSimpleName(), "DirectCompactOrderedSketch");
+    assertEquals(csk3.getClass().getSimpleName(), "DirectCompactSketch");
   }
 
   @Test
diff --git a/src/test/java/org/apache/datasketches/theta/SingleItemSketchTest.java b/src/test/java/org/apache/datasketches/theta/SingleItemSketchTest.java
index 7a50ba8..dbbc6ff 100644
--- a/src/test/java/org/apache/datasketches/theta/SingleItemSketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/SingleItemSketchTest.java
@@ -205,9 +205,9 @@ public class SingleItemSketchTest {
     bytes = Sketches.getMaxCompactSketchBytes(1);
     wmem = WritableMemory.wrap(new byte[bytes]);
     csk = sk1.compact(true, wmem);
-    assertTrue(csk instanceof DirectCompactOrderedSketch);
+    assertTrue(csk.isOrdered());
     csk = sk1.compact(false, wmem);
-    assertTrue(csk instanceof DirectCompactOrderedSketch);
+    assertTrue(csk.isOrdered());
   }
 
   @Test
@@ -294,7 +294,7 @@ public class SingleItemSketchTest {
     inter.update(sk2);
     WritableMemory wmem = WritableMemory.wrap(new byte[16]);
     CompactSketch csk = inter.getResult(false, wmem);
-    assertTrue(csk instanceof DirectCompactOrderedSketch);
+    assertTrue(csk.isOrdered());
     Sketch csk2 = Sketches.heapifySketch(wmem);
     assertTrue(csk2 instanceof SingleItemSketch);
     println(csk2.toString(true, true, 1, true));
diff --git a/src/test/java/org/apache/datasketches/theta/SketchTest.java b/src/test/java/org/apache/datasketches/theta/SketchTest.java
index 037dd47..db8ac34 100644
--- a/src/test/java/org/apache/datasketches/theta/SketchTest.java
+++ b/src/test/java/org/apache/datasketches/theta/SketchTest.java
@@ -329,11 +329,13 @@ public class SketchTest {
     sketch.update(1);
     sketch.update(2);
     assertTrue(sketch.isSameResource(mem));
-    DirectCompactOrderedSketch dcos = (DirectCompactOrderedSketch) sketch.compact(true, cmem);
+    DirectCompactSketch dcos = (DirectCompactSketch) sketch.compact(true, cmem);
     assertTrue(dcos.isSameResource(cmem));
+    assertTrue(dcos.isOrdered());
     //never create 2 sketches with the same memory, so don't do as I do :)
-    DirectCompactUnorderedSketch dcs = (DirectCompactUnorderedSketch) sketch.compact(false, cmem);
+    DirectCompactSketch dcs = (DirectCompactSketch) sketch.compact(false, cmem);
     assertTrue(dcs.isSameResource(cmem));
+    assertFalse(dcs.isOrdered());
 
     Sketch sk = Sketches.updateSketchBuilder().setNominalEntries(k).build();
     assertFalse(sk.isSameResource(mem));
diff --git a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
index b1d7a7f..c7d2b50 100644
--- a/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
+++ b/src/test/java/org/apache/datasketches/theta/UnionImplTest.java
@@ -54,14 +54,14 @@ public class UnionImplTest {
     assertEquals(union.getResult().getEstimate(), k, 0.0);
   }
 
-  @Test(expectedExceptions = SketchesArgumentException.class)
-  public void checkCorruptedCompactFlag() {
+  @Test
+  public void checkUnorderedCompactFlag() {
     int k = 16;
     WritableMemory mem = WritableMemory.wrap(new byte[(k*8) + 24]);
     UpdateSketch sketch = Sketches.updateSketchBuilder().setNominalEntries(k).build();
     for (int i=0; i<k; i++) { sketch.update(i); }
     CompactSketch sketchInDirectOrd = sketch.compact(true, mem);
-    sketch.compact(false, mem); //corrupt memory
+    sketch.compact(false, mem); //change the order bit
     Union union = Sketches.setOperationBuilder().setNominalEntries(k).buildUnion();
     union.update(sketchInDirectOrd);
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org