Merge pull request #309 from apache/ImproveTestCoverage

Improve test coverage using Clover.
diff --git a/src/main/java/org/apache/datasketches/cpc/BitMatrix.java b/src/main/java/org/apache/datasketches/cpc/BitMatrix.java
index 9b5c50b..8f88ad9 100644
--- a/src/main/java/org/apache/datasketches/cpc/BitMatrix.java
+++ b/src/main/java/org/apache/datasketches/cpc/BitMatrix.java
@@ -57,7 +57,8 @@
 
   long getNumCoupons() {
     if (numCouponsInvalid) {
-      numCoupons = countCoupons();
+      numCoupons = countCoupons(bitMatrix);
+      numCouponsInvalid = false;
     }
     return numCoupons;
   }
@@ -98,11 +99,10 @@
     }
   }
 
-  private long countCoupons() {
+  static long countCoupons(final long[] bitMatrix) {
     long count = 0;
     final int len = bitMatrix.length;
     for (int i = 0; i < len; i++) { count += Long.bitCount(bitMatrix[i]); }
-    numCouponsInvalid = false;
     return count;
   }
 
diff --git a/src/main/java/org/apache/datasketches/sampling/VarOptItemsSketch.java b/src/main/java/org/apache/datasketches/sampling/VarOptItemsSketch.java
index 54d69ab..055ebbb 100644
--- a/src/main/java/org/apache/datasketches/sampling/VarOptItemsSketch.java
+++ b/src/main/java/org/apache/datasketches/sampling/VarOptItemsSketch.java
@@ -20,7 +20,23 @@
 package org.apache.datasketches.sampling;
 
 import static org.apache.datasketches.Util.LS;
-import static org.apache.datasketches.sampling.PreambleUtil.*;
+import static org.apache.datasketches.sampling.PreambleUtil.EMPTY_FLAG_MASK;
+import static org.apache.datasketches.sampling.PreambleUtil.GADGET_FLAG_MASK;
+import static org.apache.datasketches.sampling.PreambleUtil.SER_VER;
+import static org.apache.datasketches.sampling.PreambleUtil.TOTAL_WEIGHT_R_DOUBLE;
+import static org.apache.datasketches.sampling.PreambleUtil.VO_PRELONGS_EMPTY;
+import static org.apache.datasketches.sampling.PreambleUtil.VO_PRELONGS_FULL;
+import static org.apache.datasketches.sampling.PreambleUtil.VO_PRELONGS_WARMUP;
+import static org.apache.datasketches.sampling.PreambleUtil.extractFamilyID;
+import static org.apache.datasketches.sampling.PreambleUtil.extractFlags;
+import static org.apache.datasketches.sampling.PreambleUtil.extractHRegionItemCount;
+import static org.apache.datasketches.sampling.PreambleUtil.extractK;
+import static org.apache.datasketches.sampling.PreambleUtil.extractN;
+import static org.apache.datasketches.sampling.PreambleUtil.extractRRegionItemCount;
+import static org.apache.datasketches.sampling.PreambleUtil.extractResizeFactor;
+import static org.apache.datasketches.sampling.PreambleUtil.extractSerVer;
+import static org.apache.datasketches.sampling.PreambleUtil.extractTotalRWeight;
+import static org.apache.datasketches.sampling.PreambleUtil.getAndCheckPreLongs;
 import static org.apache.datasketches.sampling.SamplingUtil.pseudoHypergeometricLBonP;
 import static org.apache.datasketches.sampling.SamplingUtil.pseudoHypergeometricUBonP;
 
@@ -105,7 +121,7 @@
 
   private VarOptItemsSketch(final int k, final ResizeFactor rf) {
     // required due to a theorem about lightness during merging
-    if (k < 1 || k > (Integer.MAX_VALUE - 1)) {
+    if ((k < 1) || (k > (Integer.MAX_VALUE - 1))) {
       throw new SketchesArgumentException("k must be at least 1 and less than " + Integer.MAX_VALUE
         + ". Found: " + k);
     }
@@ -271,8 +287,8 @@
                 + " for an empty sketch. Found: " + numPreLongs);
       }
     } else {
-      if (numPreLongs != VO_PRELONGS_WARMUP
-          && numPreLongs != VO_PRELONGS_FULL) {
+      if ((numPreLongs != VO_PRELONGS_WARMUP)
+          && (numPreLongs != VO_PRELONGS_FULL)) {
         throw new SketchesArgumentException("Possible corruption: Must be " + VO_PRELONGS_WARMUP
                 + " or " + VO_PRELONGS_FULL + " for a non-empty sketch. Found: " + numPreLongs);
       }
diff --git a/src/test/java/org/apache/datasketches/cpc/TestAllTest.java b/src/test/java/org/apache/datasketches/cpc/TestAllTest.java
index d09db5b..a6d1453 100644
--- a/src/test/java/org/apache/datasketches/cpc/TestAllTest.java
+++ b/src/test/java/org/apache/datasketches/cpc/TestAllTest.java
@@ -20,9 +20,11 @@
 package org.apache.datasketches.cpc;
 
 import static org.apache.datasketches.Util.DEFAULT_UPDATE_SEED;
+import static org.testng.Assert.assertEquals;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
+import java.util.Arrays;
 
 import org.testng.annotations.Test;
 
@@ -49,6 +51,18 @@
     sVal.start();
   }
 
+  //Matrix
+  @Test
+  public void matrixCouponCountCheck() {
+    long pat = 0xA5A5A5A5_5A5A5A5AL;
+    int len = 16;
+    long[] arr = new long[len];
+    Arrays.fill(arr, pat);
+    long trueCount = len * Long.bitCount(pat);
+    long testCount = BitMatrix.countCoupons(arr);
+    assertEquals(testCount, trueCount);
+  }
+
   //COMPRESSION
 
   @Test //scope = Test
@@ -82,7 +96,7 @@
 
   //MERGING
 
-  //@Test //longer test. use for characterization
+  @Test //longer test. use for characterization
   public void mergingValidationCheck() {
     int lgMinK = 10;
     int lgMaxK = 10; //inclusive
@@ -106,4 +120,10 @@
     qmv.start();
   }
 
+  @Test
+  public void checkPwrLaw10NextDouble() {
+    double next = TestUtil.pwrLaw10NextDouble(1, 10.0);
+    assertEquals(next, 100.0);
+  }
+
 }
diff --git a/src/test/java/org/apache/datasketches/sampling/VarOptItemsSketchTest.java b/src/test/java/org/apache/datasketches/sampling/VarOptItemsSketchTest.java
index f06d626..4454308 100644
--- a/src/test/java/org/apache/datasketches/sampling/VarOptItemsSketchTest.java
+++ b/src/test/java/org/apache/datasketches/sampling/VarOptItemsSketchTest.java
@@ -23,21 +23,19 @@
 import static org.apache.datasketches.sampling.PreambleUtil.PREAMBLE_LONGS_BYTE;
 import static org.apache.datasketches.sampling.PreambleUtil.SER_VER_BYTE;
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
 import static org.testng.Assert.assertTrue;
 import static org.testng.Assert.fail;
 
-import org.testng.annotations.Test;
-
-import org.apache.datasketches.memory.Memory;
-import org.apache.datasketches.memory.WritableMemory;
 import org.apache.datasketches.ArrayOfLongsSerDe;
 import org.apache.datasketches.ArrayOfStringsSerDe;
 import org.apache.datasketches.Family;
 import org.apache.datasketches.ResizeFactor;
 import org.apache.datasketches.SketchesArgumentException;
 import org.apache.datasketches.SketchesStateException;
+import org.apache.datasketches.memory.Memory;
+import org.apache.datasketches.memory.WritableMemory;
+import org.testng.annotations.Test;
 
 @SuppressWarnings("javadoc")
 public class VarOptItemsSketchTest {