You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/02/16 20:40:02 UTC

[commons-collections] branch master updated: Use the stock JRE Objects.requireNonNull() for parameter validation.

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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-collections.git


The following commit(s) were added to refs/heads/master by this push:
     new 87497d0  Use the stock JRE Objects.requireNonNull() for parameter validation.
87497d0 is described below

commit 87497d0fa12cd389bf0107fe13c5f6f46de4f340
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Sun Feb 16 15:39:57 2020 -0500

    Use the stock JRE Objects.requireNonNull() for parameter validation.
    
    Formatting. Javadoc.
---
 .../collections4/bloomfilter/BloomFilter.java      |   4 +-
 .../bloomfilter/CountingBloomFilter.java           |  45 +-
 .../collections4/bloomfilter/SetOperations.java    |   9 +-
 .../bloomfilter/hasher/DynamicHasher.java          |   3 +-
 .../bloomfilter/hasher/HashFunctionIdentity.java   |   6 +-
 .../hasher/HashFunctionIdentityImpl.java           |   1 +
 .../collections4/bloomfilter/hasher/Hasher.java    |   6 +-
 .../collections4/bloomfilter/hasher/Shape.java     |  24 +-
 .../bloomfilter/hasher/StaticHasher.java           |   3 +-
 .../hasher/function/Murmur128x86Cyclic.java        |   1 +
 .../bloomfilter/BitSetBloomFilterTest.java         |  56 +-
 .../bloomfilter/CountingBloomFilterTest.java       |  10 +-
 .../bloomfilter/DefaultBloomFilterMethodsTest.java |   6 +-
 .../bloomfilter/HasherBloomFilterTest.java         |  19 +-
 .../hasher/DynamicHasherBuilderTest.java           |  20 +-
 .../bloomfilter/hasher/DynamicHasherTest.java      |   4 +-
 .../hasher/HashFunctionIdentityImplTest.java       |  27 +-
 .../collections4/bloomfilter/hasher/ShapeTest.java | 758 ++++++++++-----------
 18 files changed, 478 insertions(+), 524 deletions(-)

diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilter.java b/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilter.java
index d3005f2..01e6c73 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilter.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/BloomFilter.java
@@ -88,14 +88,14 @@ public interface BloomFilter {
     Shape getShape();
 
     /**
-     * Merge the other Bloom filter into this one.
+     * Merges the other Bloom filter into this one.
      *
      * @param other the other Bloom filter.
      */
     void merge(BloomFilter other);
 
     /**
-     * Merge the decomposed Bloom filter defined by the hasher into this Bloom
+     * Merges the decomposed Bloom filter defined by the hasher into this Bloom
      * filter. The hasher provides an iterator of bit indexes to enable.
      *
      * @param hasher the hasher to provide the indexes.
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/CountingBloomFilter.java b/src/main/java/org/apache/commons/collections4/bloomfilter/CountingBloomFilter.java
index 30d9be4..c010af5 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/CountingBloomFilter.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/CountingBloomFilter.java
@@ -47,7 +47,7 @@ import org.apache.commons.collections4.bloomfilter.hasher.StaticHasher;
 public class CountingBloomFilter extends AbstractBloomFilter {
 
     /**
-     * the count of entries. Each enabled bit is a key with the count for that bit
+     * The count of entries. Each enabled bit is a key with the count for that bit
      * being the value.  Entries with a value of zero are removed.
      */
     private final TreeMap<Integer, Integer> counts;
@@ -73,24 +73,21 @@ public class CountingBloomFilter extends AbstractBloomFilter {
      * @param counts A map of data counts.
      * @param shape  The shape of the resulting filter.
      */
-    public CountingBloomFilter(final Map<Integer,Integer> counts, final Shape shape) {
+    public CountingBloomFilter(final Map<Integer, Integer> counts, final Shape shape) {
         this(shape);
-        counts.entrySet().stream().forEach( e -> {
-            if (e.getKey() >= shape.getNumberOfBits())
-            {
-                throw new IllegalArgumentException( "dataMap has an item with an index larger than "+
-                    (shape.getNumberOfBits()-1) );
-            }
-            else if (e.getKey() < 0)
-            {
-                throw new IllegalArgumentException( "dataMap has an item with an index less than 0" );
+        counts.entrySet().stream().forEach(e -> {
+            if (e.getKey() >= shape.getNumberOfBits()) {
+                throw new IllegalArgumentException(
+                    "dataMap has an item with an index larger than " + (shape.getNumberOfBits() - 1));
+            } else if (e.getKey() < 0) {
+                throw new IllegalArgumentException("dataMap has an item with an index less than 0");
             }
             if (e.getValue() < 0) {
-                throw new IllegalArgumentException( "dataMap has an item with an value less than 0" );
-            } else if (e.getValue() > 0)
-            {
-                this.counts.put( e.getKey(), e.getValue() );
-            }});
+                throw new IllegalArgumentException("dataMap has an item with an value less than 0");
+            } else if (e.getValue() > 0) {
+                this.counts.put(e.getKey(), e.getValue());
+            }
+        });
     }
 
     /**
@@ -167,9 +164,8 @@ public class CountingBloomFilter extends AbstractBloomFilter {
     @Override
     public void merge(final BloomFilter other) {
         verifyShape(other);
-        if (other instanceof CountingBloomFilter)
-        {
-            merge(((CountingBloomFilter)other).counts.keySet().iterator());
+        if (other instanceof CountingBloomFilter) {
+            merge(((CountingBloomFilter) other).counts.keySet().iterator());
         } else {
             merge(BitSet.valueOf(other.getBits()).stream().iterator());
         }
@@ -182,7 +178,7 @@ public class CountingBloomFilter extends AbstractBloomFilter {
     }
 
     /**
-     * Merge an iterator of set bits into this filter.
+     * Merges an iterator of set bits into this filter.
      * @param iter the iterator of bits to set.
      */
     private void merge(final Iterator<Integer> iter) {
@@ -199,7 +195,7 @@ public class CountingBloomFilter extends AbstractBloomFilter {
     }
 
     /**
-     * Decrement the counts for the bits that are on in the other BloomFilter from this
+     * Decrements the counts for the bits that are on in the other BloomFilter from this
      * one.
      *
      * <p>
@@ -210,16 +206,15 @@ public class CountingBloomFilter extends AbstractBloomFilter {
      */
     public void remove(final BloomFilter other) {
         verifyShape(other);
-        if (other instanceof CountingBloomFilter)
-        {
-            remove(((CountingBloomFilter)other).counts.keySet().stream());
+        if (other instanceof CountingBloomFilter) {
+            remove(((CountingBloomFilter) other).counts.keySet().stream());
         } else {
             remove(BitSet.valueOf(other.getBits()).stream().boxed());
         }
     }
 
     /**
-     * Decrement the counts for the bits that are on in the hasher from this
+     * Decrements the counts for the bits that are on in the hasher from this
      * Bloom filter.
      *
      * <p>
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/SetOperations.java b/src/main/java/org/apache/commons/collections4/bloomfilter/SetOperations.java
index 2d0358b..a42e900 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/SetOperations.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/SetOperations.java
@@ -50,10 +50,9 @@ public final class SetOperations {
      * @return the Cosine similarity.
      */
     public static double cosineSimilarity(final BloomFilter first, final BloomFilter second) {
-        verifyShape(first,second);
+        verifyShape(first, second);
         final int numerator = first.andCardinality(second);
-
-        return numerator==0?0:numerator / (Math.sqrt(first.cardinality()) * Math.sqrt(second.cardinality()));
+        return numerator == 0 ? 0 : numerator / (Math.sqrt(first.cardinality()) * Math.sqrt(second.cardinality()));
     }
 
     /**
@@ -138,10 +137,10 @@ public final class SetOperations {
      * @return the Jaccard similarity.
      */
     public static double jaccardSimilarity(final BloomFilter first, final BloomFilter second) {
-        verifyShape(first,second);
+        verifyShape(first, second);
         final int orCard = first.orCardinality(second);
         // if the orCard is zero then the hamming distance will also be zero.
-        return orCard==0?0:hammingDistance(first,second) / (double) orCard;
+        return orCard == 0 ? 0 : hammingDistance(first, second) / (double) orCard;
     }
 
     /**
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasher.java b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasher.java
index d6caa36..2b598a8 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasher.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasher.java
@@ -34,6 +34,7 @@ public class DynamicHasher implements Hasher {
      * @since 4.5
      */
     public static class Builder implements Hasher.Builder {
+
         /**
          * The list of byte[] that are to be hashed.
          */
@@ -92,7 +93,7 @@ public class DynamicHasher implements Hasher {
         private final Shape shape;
 
         /**
-         * Creates iterator with the specified shape.
+         * Constructs iterator with the specified shape.
          *
          * @param shape
          */
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentity.java b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentity.java
index bf5ea95..bdf53fe 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentity.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentity.java
@@ -83,7 +83,7 @@ public interface HashFunctionIdentity {
     };
 
     /**
-     * Get a common formatted string for general display.
+     * Gets a common formatted string for general display.
      *
      * @param identity the identity to format.
      * @return the String representing the identity.
@@ -93,7 +93,7 @@ public interface HashFunctionIdentity {
     }
 
     /**
-     * Get the signature buffer for a HashFunctionIdentity.
+     * Gets the signature buffer for a HashFunctionIdentity.
      * <p>
      * The signature of this function is calculated as:
      * {@code
@@ -141,7 +141,7 @@ public interface HashFunctionIdentity {
     String getProvider();
 
     /**
-     * Get the signature of this function. <p> The signature of this function is
+     * Gets the signature of this function. <p> The signature of this function is
      * calculated as: {@code
      * apply( String.format( "%s-%s-%s", getName(), getSignedness(), getProcess() )
      *     .getBytes( "UTF-8" ), 0 );
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentityImpl.java b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentityImpl.java
index b1bb202..93b0d77 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentityImpl.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentityImpl.java
@@ -59,6 +59,7 @@ public final class HashFunctionIdentityImpl implements HashFunctionIdentity {
         this.process = process;
         this.signature = signature;
     }
+
     @Override
     public String getName() {
         return name;
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/Hasher.java b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/Hasher.java
index 2608ca6..9e46f18 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/Hasher.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/Hasher.java
@@ -38,8 +38,9 @@ public interface Hasher {
      * @since 4.5
      */
     interface Builder {
+
         /**
-         * Build the hasher.
+         * Builds the hasher.
          * @return the fully constructed hasher.
          */
         Hasher build();
@@ -78,7 +79,7 @@ public interface Hasher {
     }
 
     /**
-     * Return an iterator of integers that are the bits to enable in the Bloom
+     * Gets an iterator of integers that are the bits to enable in the Bloom
      * filter based on the shape.  No guarantee is made as to order
      * or duplication of values.
      *
@@ -98,6 +99,7 @@ public interface Hasher {
 
     /**
      * Returns true if the hasher specifies no bits.
+     *
      * @return true if the hasher does not specify any bits.
      */
     boolean isEmpty();
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/Shape.java b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/Shape.java
index 712c185..f5a1e45 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/Shape.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/Shape.java
@@ -82,7 +82,7 @@ public class Shape {
     private final HashFunctionIdentity hashFunctionIdentity;
 
     /**
-     * Create a filter configuration with the specified number of items and
+     * Constructs a filter configuration with the specified number of items and
      * probability.
      *
      * @param hashFunctionIdentity The HashFunctionIdentity of the hash function this shape uses.
@@ -93,9 +93,7 @@ public class Shape {
      */
     public Shape(final HashFunctionIdentity hashFunctionIdentity, final double probability, final int numberOfBits,
         final int numberOfHashFunctions) {
-        if (hashFunctionIdentity == null) {
-            throw new IllegalArgumentException("Hash function name may not be null");
-        }
+        Objects.requireNonNull(hashFunctionIdentity, "hashFunctionIdentity");
         if (probability <= 0.0) {
             throw new IllegalArgumentException("Probability must be greater than 0.0");
         }
@@ -133,7 +131,7 @@ public class Shape {
     }
 
     /**
-     * Create a filter configuration with the specified number of items and
+     * Constructs a filter configuration with the specified number of items and
      * probability. <p> The actual probability will be approximately equal to the
      * desired probability but will be dependent upon the calculated bloom filter size
      * and function count. </p>
@@ -144,9 +142,7 @@ public class Shape {
      * (0.0,1.0).
      */
     public Shape(final HashFunctionIdentity hashFunctionIdentity, final int numberOfItems, final double probability) {
-        if (hashFunctionIdentity == null) {
-            throw new IllegalArgumentException("Hash function identity may not be null");
-        }
+        Objects.requireNonNull(hashFunctionIdentity, "hashFunctionIdentity");
         if (numberOfItems < 1) {
             throw new IllegalArgumentException("Number of Items must be greater than 0");
         }
@@ -175,7 +171,7 @@ public class Shape {
     }
 
     /**
-     * Create a filter configuration with the specified number of items and
+     * Constructs a filter configuration with the specified number of items and
      * probability.
      *
      * @param hashFunctionIdentity The HashFunctionIdentity of the hash function this shape uses.
@@ -183,9 +179,7 @@ public class Shape {
      * @param numberOfBits The number of bits in the filter.
      */
     public Shape(final HashFunctionIdentity hashFunctionIdentity, final int numberOfItems, final int numberOfBits) {
-        if (hashFunctionIdentity == null) {
-            throw new IllegalArgumentException("Hash function name may not be null");
-        }
+        Objects.requireNonNull(hashFunctionIdentity, "hashFunctionIdentity");
         if (numberOfItems < 1) {
             throw new IllegalArgumentException("Number of Items must be greater than 0");
         }
@@ -203,7 +197,7 @@ public class Shape {
     }
 
     /**
-     * Create a filter configuration with the specified number of items and
+     * Constructs a filter configuration with the specified number of items and
      * probability.
      *
      * @param hashFunctionIdentity The HashFunctionIdentity of the hash function this shape uses.
@@ -213,9 +207,7 @@ public class Shape {
      */
     public Shape(final HashFunctionIdentity hashFunctionIdentity, final int numberOfItems, final int numberOfBits,
         final int numberOfHashFunctions) {
-        if (hashFunctionIdentity == null) {
-            throw new IllegalArgumentException("Hash function name may not be null");
-        }
+        Objects.requireNonNull(hashFunctionIdentity, "hashFunctionIdentity");
         if (numberOfItems < 1) {
             throw new IllegalArgumentException("Number of Items must be greater than 0");
         }
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/StaticHasher.java b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/StaticHasher.java
index cd8bf36..9ad102c 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/StaticHasher.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/StaticHasher.java
@@ -34,6 +34,7 @@ public final class StaticHasher implements Hasher {
      * The shape of this hasher
      */
     private final Shape shape;
+
     /**
      * The ordered set of values that this hasher will return.
      */
@@ -95,7 +96,7 @@ public final class StaticHasher implements Hasher {
     }
 
     /**
-     * Returns an iterator of integers that are the bits to enable in the Bloom
+     * Gets an iterator of integers that are the bits to enable in the Bloom
      * filter based on the shape.  The iterator will not return the same value multiple
      * times.  Values will be returned in ascending order.
      *
diff --git a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/function/Murmur128x86Cyclic.java b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/function/Murmur128x86Cyclic.java
index c599d2b..218a82e 100644
--- a/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/function/Murmur128x86Cyclic.java
+++ b/src/main/java/org/apache/commons/collections4/bloomfilter/hasher/function/Murmur128x86Cyclic.java
@@ -30,6 +30,7 @@ import org.apache.commons.collections4.bloomfilter.hasher.HashFunctionIdentity;
  * @since 4.5
  */
 public final class Murmur128x86Cyclic implements HashFunction {
+
     /**
      * The name of this hash method.
      */
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/BitSetBloomFilterTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/BitSetBloomFilterTest.java
index 3c3230f..51c1027 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/BitSetBloomFilterTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/BitSetBloomFilterTest.java
@@ -37,38 +37,37 @@ public class BitSetBloomFilterTest extends AbstractBloomFilterTest {
      */
     @Test
     public void andCardinalityTest_BitSetBloomFilter() {
-        final Hasher hasher = new StaticHasher( Arrays.asList( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ).iterator(), shape );
+        final Hasher hasher = new StaticHasher(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).iterator(), shape);
 
         final BitSetBloomFilter bf = createFilter(hasher, shape);
 
-        Hasher hasher2 = new StaticHasher( Arrays.asList( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ).iterator(), shape );
+        Hasher hasher2 = new StaticHasher(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).iterator(), shape);
         BitSetBloomFilter bf2 = createFilter(hasher2, shape);
 
-        assertEquals( 10, bf.andCardinality(bf2));
-        assertEquals( 10, bf2.andCardinality(bf));
+        assertEquals(10, bf.andCardinality(bf2));
+        assertEquals(10, bf2.andCardinality(bf));
 
-        hasher2 = new StaticHasher( Arrays.asList( 1, 2, 3, 4, 5 ).iterator(), shape );
+        hasher2 = new StaticHasher(Arrays.asList(1, 2, 3, 4, 5).iterator(), shape);
         bf2 = createFilter(hasher2, shape);
 
-        assertEquals( 5, bf.andCardinality(bf2));
-        assertEquals( 5, bf2.andCardinality(bf));
+        assertEquals(5, bf.andCardinality(bf2));
+        assertEquals(5, bf2.andCardinality(bf));
 
-        hasher2 = new StaticHasher( Arrays.asList( 11, 12, 13, 14, 15 ).iterator(), shape );
+        hasher2 = new StaticHasher(Arrays.asList(11, 12, 13, 14, 15).iterator(), shape);
         bf2 = createFilter(hasher2, shape);
-        assertEquals( 0, bf.andCardinality(bf2));
-        assertEquals( 0, bf2.andCardinality(bf));
-
+        assertEquals(0, bf.andCardinality(bf2));
+        assertEquals(0, bf2.andCardinality(bf));
 
     }
 
     @Override
     protected BitSetBloomFilter createEmptyFilter(final Shape shape) {
-        return new BitSetBloomFilter( shape );
+        return new BitSetBloomFilter(shape);
     }
 
     @Override
     protected BitSetBloomFilter createFilter(final Hasher hasher, final Shape shape) {
-        return new BitSetBloomFilter( hasher, shape );
+        return new BitSetBloomFilter(hasher, shape);
     }
 
     /**
@@ -77,20 +76,19 @@ public class BitSetBloomFilterTest extends AbstractBloomFilterTest {
     @Test
     public void mergeTest_BitSetBloomFilter() {
 
-        final List<Integer> lst = Arrays.asList( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ,16 ,17 );
-        final Hasher hasher = new StaticHasher( lst.iterator(), shape );
+        final List<Integer> lst = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17);
+        final Hasher hasher = new StaticHasher(lst.iterator(), shape);
 
         final BitSetBloomFilter bf = createFilter(hasher, shape);
 
-        final List<Integer> lst2 = Arrays.asList( 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 ,26 ,27 );
-        final Hasher hasher2 = new StaticHasher( lst2.iterator(), shape );
+        final List<Integer> lst2 = Arrays.asList(11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27);
+        final Hasher hasher2 = new StaticHasher(lst2.iterator(), shape);
         final BloomFilter bf2 = new BitSetBloomFilter(hasher2, shape);
 
         bf.merge(bf2);
 
         assertEquals(27, bf.cardinality());
 
-
     }
 
     /**
@@ -98,29 +96,27 @@ public class BitSetBloomFilterTest extends AbstractBloomFilterTest {
      */
     @Test
     public void xorCardinalityTest_BitSetBloomFilter() {
-        final Hasher hasher = new StaticHasher( Arrays.asList( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ).iterator(), shape );
+        final Hasher hasher = new StaticHasher(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).iterator(), shape);
 
         final BitSetBloomFilter bf = createFilter(hasher, shape);
 
-        Hasher hasher2 = new StaticHasher( Arrays.asList( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ).iterator(), shape );
+        Hasher hasher2 = new StaticHasher(Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).iterator(), shape);
         BitSetBloomFilter bf2 = createFilter(hasher2, shape);
 
-        assertEquals( 0, bf.xorCardinality(bf2));
-        assertEquals( 0, bf2.xorCardinality(bf));
+        assertEquals(0, bf.xorCardinality(bf2));
+        assertEquals(0, bf2.xorCardinality(bf));
 
-        hasher2 = new StaticHasher( Arrays.asList( 1, 2, 3, 4, 5 ).iterator(), shape );
+        hasher2 = new StaticHasher(Arrays.asList(1, 2, 3, 4, 5).iterator(), shape);
         bf2 = createFilter(hasher2, shape);
 
-        assertEquals( 5, bf.xorCardinality(bf2));
-        assertEquals( 5, bf2.xorCardinality(bf));
+        assertEquals(5, bf.xorCardinality(bf2));
+        assertEquals(5, bf2.xorCardinality(bf));
 
-        hasher2 = new StaticHasher( Arrays.asList( 11, 12, 13, 14, 15 ).iterator(), shape );
+        hasher2 = new StaticHasher(Arrays.asList(11, 12, 13, 14, 15).iterator(), shape);
         bf2 = createFilter(hasher2, shape);
-        assertEquals( 15, bf.xorCardinality(bf2));
-        assertEquals( 15, bf2.xorCardinality(bf));
-
+        assertEquals(15, bf.xorCardinality(bf2));
+        assertEquals(15, bf2.xorCardinality(bf));
 
     }
 
-
 }
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/CountingBloomFilterTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/CountingBloomFilterTest.java
index 853b383..991ef01 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/CountingBloomFilterTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/CountingBloomFilterTest.java
@@ -104,7 +104,7 @@ public class CountingBloomFilterTest extends AbstractBloomFilterTest {
         map.put( shape.getNumberOfBits(), 1 );
         try {
             bf = new CountingBloomFilter( map, shape);
-            fail( "Should have thrown IllegalArgumentExceptionW");
+            fail("Should have thrown IllegalArgumentExceptionW");
         } catch (final IllegalArgumentException exprected)
         {
             // expected
@@ -114,7 +114,7 @@ public class CountingBloomFilterTest extends AbstractBloomFilterTest {
         map.put( -1, 1 );
         try {
             bf = new CountingBloomFilter( map, shape);
-            fail( "Should have thrown IllegalArgumentExceptionW");
+            fail("Should have thrown IllegalArgumentExceptionW");
         } catch (final IllegalArgumentException exprected)
         {
             // expected
@@ -124,7 +124,7 @@ public class CountingBloomFilterTest extends AbstractBloomFilterTest {
         map.put( 1, -1 );
         try {
             bf = new CountingBloomFilter( map, shape);
-            fail( "Should have thrown IllegalArgumentExceptionW");
+            fail("Should have thrown IllegalArgumentExceptionW");
         } catch (final IllegalArgumentException exprected)
         {
             // expected
@@ -249,7 +249,7 @@ public class CountingBloomFilterTest extends AbstractBloomFilterTest {
 
         try {
             bf.merge(bf2);
-            fail( "Should have thrown IllegalStateException");
+            fail("Should have thrown IllegalStateException");
         }
         catch (final IllegalStateException expected)
         {
@@ -428,7 +428,7 @@ public class CountingBloomFilterTest extends AbstractBloomFilterTest {
 
         try {
             bf.remove(bf2);
-            fail( "Should have thrown IllegalStateException");
+            fail("Should have thrown IllegalStateException");
         }
         catch (final IllegalStateException expected)
         {
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/DefaultBloomFilterMethodsTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/DefaultBloomFilterMethodsTest.java
index f7de15e..2c6fd2d 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/DefaultBloomFilterMethodsTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/DefaultBloomFilterMethodsTest.java
@@ -81,7 +81,7 @@ public class DefaultBloomFilterMethodsTest extends AbstractBloomFilterTest {
 
         @Override
         public void merge(final Hasher hasher) {
-            verifyHasher( hasher );
+            verifyHasher(hasher);
             hasher.getBits(getShape()).forEachRemaining((IntConsumer) bitSet::set);
         }
 
@@ -89,12 +89,12 @@ public class DefaultBloomFilterMethodsTest extends AbstractBloomFilterTest {
 
     @Override
     protected AbstractBloomFilter createEmptyFilter(final Shape shape) {
-        return new BF( shape );
+        return new BF(shape);
     }
 
     @Override
     protected AbstractBloomFilter createFilter(final Hasher hasher, final Shape shape) {
-        return new BF( hasher, shape );
+        return new BF(hasher, shape);
     }
 
 }
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/HasherBloomFilterTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/HasherBloomFilterTest.java
index 82a0a2a..2c398b4 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/HasherBloomFilterTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/HasherBloomFilterTest.java
@@ -32,31 +32,30 @@ import org.junit.Test;
  */
 public class HasherBloomFilterTest extends AbstractBloomFilterTest {
 
-
     /**
      * Tests that the constructor works correctly.
+     * 
      * @throws NoSuchAlgorithmException
      */
     @Test
     public void constructorTest_NonStatic() throws NoSuchAlgorithmException {
-        final Shape shape = new Shape( new MD5Cyclic(), 3, 72, 17 );
-        final DynamicHasher hasher = new DynamicHasher.Builder( new MD5Cyclic() ).with( "Hello").build();
-        final HasherBloomFilter filter = createFilter( hasher, shape );
+        final Shape shape = new Shape(new MD5Cyclic(), 3, 72, 17);
+        final DynamicHasher hasher = new DynamicHasher.Builder(new MD5Cyclic()).with("Hello").build();
+        final HasherBloomFilter filter = createFilter(hasher, shape);
         final long[] lb = filter.getBits();
-        assertEquals( 2, lb.length );
-        assertEquals( 0x6203101001888c44L, lb[0]);
-        assertEquals( 0x60L, lb[1]);
+        assertEquals(2, lb.length);
+        assertEquals(0x6203101001888c44L, lb[0]);
+        assertEquals(0x60L, lb[1]);
     }
 
     @Override
     protected AbstractBloomFilter createEmptyFilter(final Shape shape) {
-        return new HasherBloomFilter( shape );
+        return new HasherBloomFilter(shape);
     }
 
     @Override
     protected HasherBloomFilter createFilter(final Hasher hasher, final Shape shape) {
-        return new HasherBloomFilter( hasher, shape );
+        return new HasherBloomFilter(hasher, shape);
     }
 
-
 }
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasherBuilderTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasherBuilderTest.java
index e0552fe..6aa0bac 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasherBuilderTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasherBuilderTest.java
@@ -35,7 +35,7 @@ import org.junit.Test;
 public class DynamicHasherBuilderTest {
 
     private DynamicHasher.Builder builder;
-    private final Shape shape = new Shape( new MD5Cyclic(), 1, Integer.MAX_VALUE, 1 );
+    private final Shape shape = new Shape(new MD5Cyclic(), 1, Integer.MAX_VALUE, 1);
 
     /**
      * Tests that hashing a byte works as expected.
@@ -49,8 +49,8 @@ public class DynamicHasherBuilderTest {
         final OfInt iter = hasher.getBits(shape);
 
         assertTrue(iter.hasNext());
-        assertEquals( expected, iter.nextInt() );
-        assertFalse( iter.hasNext());
+        assertEquals(expected, iter.nextInt());
+        assertFalse(iter.hasNext());
     }
 
     /**
@@ -64,8 +64,8 @@ public class DynamicHasherBuilderTest {
         final OfInt iter = hasher.getBits(shape);
 
         assertTrue(iter.hasNext());
-        assertEquals( expected, iter.nextInt() );
-        assertFalse( iter.hasNext());
+        assertEquals(expected, iter.nextInt());
+        assertFalse(iter.hasNext());
 
     }
 
@@ -92,17 +92,17 @@ public class DynamicHasherBuilderTest {
         final OfInt iter = hasher.getBits(shape);
 
         assertTrue(iter.hasNext());
-        assertEquals( expected, iter.nextInt() );
-        assertFalse( iter.hasNext());
+        assertEquals(expected, iter.nextInt());
+        assertFalse(iter.hasNext());
     }
 
     /**
      * Sets up the builder for testing.
+     * 
      * @throws NoSuchAlgorithmException if MD5 is not available.
      */
     @Before
-    public void setup() throws NoSuchAlgorithmException
-    {
-        builder = new DynamicHasher.Builder( new MD5Cyclic());
+    public void setup() throws NoSuchAlgorithmException {
+        builder = new DynamicHasher.Builder(new MD5Cyclic());
     }
 }
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasherTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasherTest.java
index acddcec..e8d91d4 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasherTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/DynamicHasherTest.java
@@ -137,8 +137,8 @@ public class DynamicHasherTest {
      */
     @Test
     public void testIsEmpty() {
-        assertTrue( builder.build().isEmpty() );
-        assertFalse( builder.with("Hello").build().isEmpty() );
+        assertTrue(builder.build().isEmpty());
+        assertFalse(builder.with("Hello").build().isEmpty());
     }
 
 }
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentityImplTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentityImplTest.java
index 82a148d..7356559 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentityImplTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/HashFunctionIdentityImplTest.java
@@ -62,16 +62,17 @@ public class HashFunctionIdentityImplTest {
             }
 
         };
-        final HashFunctionIdentityImpl impl = new HashFunctionIdentityImpl( identity );
-        assertEquals( "NAME", impl.getName());
-        assertEquals( "Provider", impl.getProvider());
-        assertEquals( Signedness.SIGNED, impl.getSignedness());
-        assertEquals( ProcessType.CYCLIC, impl.getProcessType());
-        assertEquals( -1l, impl.getSignature());
+        final HashFunctionIdentityImpl impl = new HashFunctionIdentityImpl(identity);
+        assertEquals("NAME", impl.getName());
+        assertEquals("Provider", impl.getProvider());
+        assertEquals(Signedness.SIGNED, impl.getSignedness());
+        assertEquals(ProcessType.CYCLIC, impl.getProcessType());
+        assertEquals(-1l, impl.getSignature());
     }
 
     /**
      * Test the constructor from component values.
+     * 
      * @param provider the name of the provider.
      * @param name the name of the hash function.
      * @param signedness the signedness of the hash function.
@@ -80,13 +81,13 @@ public class HashFunctionIdentityImplTest {
      */
     @Test
     public void valuesConstructorTest() {
-        final HashFunctionIdentityImpl impl = new HashFunctionIdentityImpl( "Provider", "NAME",
-            Signedness.UNSIGNED, ProcessType.ITERATIVE, -2l);
-        assertEquals( "NAME", impl.getName());
-        assertEquals( "Provider", impl.getProvider());
-        assertEquals( Signedness.UNSIGNED, impl.getSignedness());
-        assertEquals( ProcessType.ITERATIVE, impl.getProcessType());
-        assertEquals( -2l, impl.getSignature());
+        final HashFunctionIdentityImpl impl = new HashFunctionIdentityImpl("Provider", "NAME", Signedness.UNSIGNED,
+            ProcessType.ITERATIVE, -2l);
+        assertEquals("NAME", impl.getName());
+        assertEquals("Provider", impl.getProvider());
+        assertEquals(Signedness.UNSIGNED, impl.getSignedness());
+        assertEquals(ProcessType.ITERATIVE, impl.getProcessType());
+        assertEquals(-2l, impl.getSignature());
     }
 
 }
diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/ShapeTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/ShapeTest.java
index f438aa5..af184ce 100644
--- a/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/ShapeTest.java
+++ b/src/test/java/org/apache/commons/collections4/bloomfilter/hasher/ShapeTest.java
@@ -33,7 +33,6 @@ import org.junit.Test;
  */
 public class ShapeTest {
 
-
     private final HashFunctionIdentity testFunction = new HashFunctionIdentity() {
 
         @Override
@@ -59,439 +58,406 @@ public class ShapeTest {
         @Override
         public Signedness getSignedness() {
             return Signedness.SIGNED;
-        }};
-
+        }
+    };
+
+    /*
+     * values from https://hur.st/bloomfilter/?n=5&p=.1&m=&k=
+     *
+     * n = 5
+     *
+     * p = 0.100375138 (1 in 10)
+     *
+     * m = 24 (3B)
+     *
+     * k = 3
+     */
+
+    private final Shape shape = new Shape(testFunction, 5, 0.1);
+
+    /**
+     * Tests that if the number of bits less than 8 an IllegalArgumentException is thrown.
+     */
+    @Test
+    public void constructor_items_bits_BadNumberOfBitsTest() {
+        try {
+            new Shape(testFunction, 5, 6);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests that if the number of hash functions is less than 1 an exception is thrown.
+     */
+    @Test
+    public void constructor_items_bits_BadNumberOfHashFunctionsTest() {
+        try {
+            new Shape(testFunction, 16, 8);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests that if the number of items less than 1 an IllegalArgumentException is thrown.
+     */
+    @Test
+    public void constructor_items_bits_BadNumberOfItemsTest() {
+        try {
+            new Shape(testFunction, 0, 24);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests that if the number of bits is less than 8 an exception is thrown
+     */
+    @Test
+    public void constructor_items_bits_hash_BadNumberOfBitsTest() {
+        try {
+            new Shape(testFunction, 5, 6, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests that if the number of hash functions is less than 1 an exception is thrown.
+     */
+    @Test
+    public void constructor_items_bits_hash_BadNumberOfHashFunctionsTest() {
+        try {
+            new Shape(testFunction, 5, 24, 0);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests that if the number of items is less than 1 an exception is thrown.
+     */
+    @Test
+    public void constructor_items_bits_hash_BadNumberOfItemsTest() {
+        try {
+            new Shape(testFunction, 0, 24, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests that if the calculated probability is greater than or equal to 1 an IllegalArgumentException is thrown
+     */
+    @Test
+    public void constructor_items_bits_hash_BadProbabilityTest() {
+        try {
+            new Shape(testFunction, 4000, 8, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
+        }
+    }
+
+    /**
+     * Tests that when the number of items, number of bits and number of hash functions is passed the values are
+     * calculated correctly.
+     */
+    @Test
+    public void constructor_items_bits_hashTest() {
         /*
-         * values from https://hur.st/bloomfilter/?n=5&p=.1&m=&k=
-         *
-         * n = 5
-         *
-         * p = 0.100375138 (1 in 10)
-         *
-         * m = 24 (3B)
-         *
-         * k = 3
+         * values from https://hur.st/bloomfilter/?n=5&m=24&k=4
          */
+        final Shape filterConfig = new Shape(testFunction, 5, 24, 4);
 
+        assertEquals(24, filterConfig.getNumberOfBits());
+        assertEquals(3, filterConfig.getNumberOfBytes());
+        assertEquals(4, filterConfig.getNumberOfHashFunctions());
+        assertEquals(5, filterConfig.getNumberOfItems());
+        assertEquals(0.102194782, filterConfig.getProbability(), 0.000001);
 
-        private final Shape shape = new Shape(testFunction, 5, 0.1);
+    }
 
-        /**
-         * Tests that if the number of bits is less than 8 an exception is thrown
+    /**
+     * Tests that the number of items and number of bits is passed the other values are calculated correctly.
+     */
+    @Test
+    public void constructor_items_bitsTest() {
+        /*
+         * values from https://hur.st/bloomfilter/?n=5&m=24
          */
-        @Test
-        public void constructor__probability_bits_hash__BadNumberOfBitsTest() {
-            try {
-                new Shape(testFunction, 0.5, 6, 1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+        final Shape filterConfig = new Shape(testFunction, 5, 24);
+
+        assertEquals(24, filterConfig.getNumberOfBits());
+        assertEquals(3, filterConfig.getNumberOfBytes());
+        assertEquals(3, filterConfig.getNumberOfHashFunctions());
+        assertEquals(5, filterConfig.getNumberOfItems());
+        assertEquals(0.100375138, filterConfig.getProbability(), 0.000001);
+
+    }
+
+    /**
+     * Tests that if the number of items is less than 1 an IllegalArgumentException is thrown.
+     */
+    @Test
+    public void constructor_items_probability_BadNumberOfItemsTest() {
+        try {
+            new Shape(testFunction, 0, 1.0 / 10);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // do nothing.
         }
-
-        /**
-         * Tests that invalid probability values cause and IllegalArgumentException to
-         * be thrown.
-         */
-        @Test
-        public void constructor__probability_bits_hash_BadProbabilityTest() {
-            // probability should not be 0
-            try {
-                new Shape(testFunction, 0.0, 24, 1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
-
-            // probability should not be = -1
-            try {
-                new Shape(testFunction, -1.0, 24, 1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
-
-            // probability should not be < -1
-            try {
-                new Shape(testFunction, -1.5, 24, 1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
-
-            // probability should not be = 1
-            try {
-                new Shape(testFunction, 1.0, 24, 1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
-
-            // probability should not be > 1
-            try {
-                new Shape(testFunction, 2.0, 24, 1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+    }
+
+    /**
+     * Tests that if the probability is less than or equal to 0 an IllegalArgumentException is thrown.
+     */
+    @Test
+    public void constructor_items_probability_BadProbabilityTest() {
+        try {
+            new Shape(testFunction, 10, 0.0);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // do nothing.
         }
 
-        /**
-         * Tests that if the number of bits less than 8 an IllegalArgumentException
-         * is thrown.
-         */
-        @Test
-        public void constructor_items_bits_BadNumberOfBitsTest() {
-            try {
-                new Shape(testFunction, 5, 6);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+        try {
+            new Shape(testFunction, 10, 1.0);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // do nothing.
         }
-
-        /**
-         * Tests that if the number of hash functions is less than 1 an exception is thrown.
-         */
-        @Test
-        public void constructor_items_bits_BadNumberOfHashFunctionsTest() {
-            try {
-                new Shape(testFunction, 16,8);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+    }
+
+    /**
+     * Tests that if calculated number of bits is greater than Integer.MAX_VALUE an IllegalArgumentException is thrown.
+     */
+    @Test
+    public void constructor_items_probability_NumberOfBitsOverflowTest() {
+        try {
+            new Shape(testFunction, Integer.MAX_VALUE, 1.0 / 10);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // do nothing.
         }
-
-        /**
-         * Tests that if the number of items less than 1 an IllegalArgumentException
-         * is thrown.
-         */
-        @Test
-        public void constructor_items_bits_BadNumberOfItemsTest() {
-            try {
-                new Shape(testFunction, 0, 24);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+    }
+
+    /**
+     * Tests the the probability is calculated correctly.
+     */
+    @Test
+    public void constructor_items_probability_Test() {
+
+        assertEquals(24, shape.getNumberOfBits());
+        assertEquals(3, shape.getNumberOfBytes());
+        assertEquals(3, shape.getNumberOfHashFunctions());
+        assertEquals(5, shape.getNumberOfItems());
+        assertEquals(0.100375138, shape.getProbability(), 0.000001);
+
+    }
+
+    /**
+     * Tests that the constructor with a null name, number of items and size of filter fails.
+     */
+    @Test
+    public void constructor_nm_noName() {
+
+        try {
+            new Shape(null, 5, 72);
+            fail("Should throw NullPointerException");
+        } catch (final NullPointerException expected) {
+            // do nothing
         }
-
-        /**
-         * Tests that if the number of bits is less than 8 an exception is thrown
-         */
-        @Test
-        public void constructor_items_bits_hash_BadNumberOfBitsTest() {
-            try {
-                new Shape(testFunction, 5, 6, 1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+    }
+
+    /**
+     * Tests that the constructor with a null name, number of items, size of filter, and number of functions fails.
+     */
+    @Test
+    public void constructor_nmk_noName() {
+
+        try {
+            new Shape(null, 5, 72, 17);
+            fail("Should throw NullPointerException");
+        } catch (final NullPointerException expected) {
+            // do nothing
         }
-
-        /**
-         * Tests that if the number of hash functions is less than 1 an exception is
-         * thrown.
-         */
-        @Test
-        public void constructor_items_bits_hash_BadNumberOfHashFunctionsTest() {
-            try {
-                new Shape(testFunction, 5, 24, 0);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+    }
+
+    /**
+     * Tests that the constructor with a null name, number of items, and probability fails.
+     */
+    @Test
+    public void constructor_np_noName() {
+
+        try {
+            new Shape(null, 5, 0.1);
+            fail("Should throw NullPointerException");
+        } catch (final NullPointerException expected) {
+            // do nothing
         }
-
-        /**
-         * Tests that if the number of items is less than 1 an exception is thrown.
-         */
-        @Test
-        public void constructor_items_bits_hash_BadNumberOfItemsTest() {
-            try {
-                new Shape(testFunction, 0, 24, 1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+    }
+
+    /**
+     * Tests that the constructor with a null name, probability, size of filter, and number of functions fails.
+     */
+    @Test
+    public void constructor_pmk_noName() {
+
+        try {
+            new Shape(null, 0.1, 72, 17);
+            fail("Should throw NullPointerException");
+        } catch (final NullPointerException expected) {
+            // do nothing
         }
-
-        /**
-         * Tests that if the calculated probability is greater than or equal to 1 an
-         * IllegalArgumentException is thrown
-         */
-        @Test
-        public void constructor_items_bits_hash_BadProbabilityTest() {
-            try {
-                new Shape(testFunction, 4000,8,1);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
-            }
+    }
+
+    /**
+     * Tests that if the number of bits is less than 8 an exception is thrown
+     */
+    @Test
+    public void constructor_probability_bits_hash__BadNumberOfBitsTest() {
+        try {
+            new Shape(testFunction, 0.5, 6, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
         }
-
-        /**
-         * Tests that when the number of items, number of bits and number of hash functions
-         * is passed the values are calculated correctly.
-         */
-        @Test
-        public void constructor_items_bits_hashTest() {
-            /*
-             * values from https://hur.st/bloomfilter/?n=5&m=24&k=4
-             */
-            final Shape filterConfig = new Shape(testFunction, 5, 24, 4);
-
-            assertEquals(24, filterConfig.getNumberOfBits());
-            assertEquals(3, filterConfig.getNumberOfBytes());
-            assertEquals(4, filterConfig.getNumberOfHashFunctions());
-            assertEquals(5, filterConfig.getNumberOfItems());
-            assertEquals(0.102194782, filterConfig.getProbability(), 0.000001);
-
+    }
+
+    /**
+     * Tests that if the number of functions is less than 1 an exception is thrown
+     */
+    @Test
+    public void constructor_probability_bits_hash_BadNumberOfHashFunctionsTest() {
+        try {
+            new Shape(testFunction, 0.5, 24, 0);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
         }
-
-        /**
-         * Tests that the number of items and number of bits is passed the other values are
-         * calculated correctly.
-         */
-        @Test
-        public void constructor_items_bitsTest() {
-            /*
-             * values from https://hur.st/bloomfilter/?n=5&m=24
-             */
-            final Shape filterConfig = new Shape(testFunction, 5, 24);
-
-            assertEquals(24, filterConfig.getNumberOfBits());
-            assertEquals(3, filterConfig.getNumberOfBytes());
-            assertEquals(3, filterConfig.getNumberOfHashFunctions());
-            assertEquals(5, filterConfig.getNumberOfItems());
-            assertEquals(0.100375138, filterConfig.getProbability(), 0.000001);
-
+    }
+
+    /**
+     * Tests that invalid probability values cause and IllegalArgumentException to be thrown.
+     */
+    @Test
+    public void constructor_probability_bits_hash_BadProbabilityTest() {
+        // probability should not be 0
+        try {
+            new Shape(testFunction, 0.0, 24, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
         }
 
-        /**
-         * Tests that if the number of items is less than 1 an IllegalArgumentException is
-         * thrown.
-         */
-        @Test
-        public void constructor_items_probability_BadNumberOfItemsTest() {
-            try {
-                new Shape( testFunction, 0, 1.0 / 10);
-                fail("Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected) {
-                // do nothing.
-            }
+        // probability should not be = -1
+        try {
+            new Shape(testFunction, -1.0, 24, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
         }
 
-        /**
-         * Tests that if the probability is less than or equal to 0 an IllegalArgumentException
-         * is thrown.
-         */
-        @Test
-        public void constructor_items_probability_BadProbabilityTest() {
-            try {
-                new Shape(testFunction, 10, 0.0);
-                fail("Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected) {
-                // do nothing.
-            }
-
-            try {
-                new Shape(testFunction, 10, 1.0);
-                fail("Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected) {
-                // do nothing.
-            }
+        // probability should not be < -1
+        try {
+            new Shape(testFunction, -1.5, 24, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
         }
 
-        /**
-         * Tests that if calculated number of bits is greater than Integer.MAX_VALUE an
-         * IllegalArgumentException is thrown.
-         */
-        @Test
-        public void constructor_items_probability_NumberOfBitsOverflowTest() {
-            try {
-                new Shape( testFunction, Integer.MAX_VALUE, 1.0 / 10);
-                fail("Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected) {
-                // do nothing.
-            }
+        // probability should not be = 1
+        try {
+            new Shape(testFunction, 1.0, 24, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
         }
 
-        /**
-         * Tests the the probability is calculated correctly.
-         */
-        @Test
-        public void constructor_items_probability_Test() {
-
-            assertEquals(24, shape.getNumberOfBits());
-            assertEquals(3, shape.getNumberOfBytes());
-            assertEquals(3, shape.getNumberOfHashFunctions());
-            assertEquals(5, shape.getNumberOfItems());
-            assertEquals(0.100375138, shape.getProbability(), 0.000001);
-
+        // probability should not be > 1
+        try {
+            new Shape(testFunction, 2.0, 24, 1);
+            fail("Should have thrown IllegalArgumentException");
+        } catch (final IllegalArgumentException expected) {
+            // expected
         }
-
-        /**
-         * Tests that the constructor with a null name, number of items and size of filter fails.
+    }
+
+    /**
+     * Tests the calculated values of calling the constructor with the probability, number of bits and number of hash
+     * functions.
+     */
+    @Test
+    public void constructor_probability_bits_hashTest() {
+        /*
+         * values from https://hur.st/bloomfilter/?n=5&p=.1&m=&k=
          */
-        @Test
-        public void constructor_nm_noName() {
-
-            try {
-                new Shape(null, 5, 72);
-                fail( "Should throw IllegalArgumentException");
-            }
-            catch (final IllegalArgumentException expected)
-            {
-                // do nothing
+        final Shape filterConfig = new Shape(testFunction, 0.1, 24, 3);
+
+        assertEquals(24, filterConfig.getNumberOfBits());
+        assertEquals(3, filterConfig.getNumberOfBytes());
+        assertEquals(3, filterConfig.getNumberOfHashFunctions());
+        assertEquals(5, filterConfig.getNumberOfItems());
+        assertEquals(0.100375138, filterConfig.getProbability(), 0.000001);
+    }
+
+    /**
+     * Test equality of shape.
+     */
+    @Test
+    public void equalsTest() {
+
+        assertEquals(new Shape(testFunction, 5, 1.0 / 10), shape);
+        assertNotEquals(new Shape(testFunction, 5, 1.0 / 11), shape);
+        assertNotEquals(new Shape(testFunction, 4, 1.0 / 10), shape);
+
+        final HashFunctionIdentity testFunction2 = new HashFunctionIdentity() {
+
+            @Override
+            public String getName() {
+                return "Test Function2";
             }
-        }
 
-        /**
-         * Tests that the constructor with a null name, number of items, size of filter,
-         * and number of functions fails.
-         */
-        @Test
-        public void constructor_nmk_noName() {
-
-            try {
-                new Shape(null, 5, 72, 17);
-                fail( "Should throw IllegalArgumentException");
-            }
-            catch (final IllegalArgumentException expected)
-            {
-                // do nothing
+            @Override
+            public ProcessType getProcessType() {
+                return ProcessType.CYCLIC;
             }
-        }
-
-        /**
-         * Tests that the constructor with a null name, number of items, and probability fails.
-         */
-        @Test
-        public void constructor_np_noName() {
 
-            try {
-                new Shape(null, 5, 0.1);
-                fail( "Should throw IllegalArgumentException");
+            @Override
+            public String getProvider() {
+                return "Apache Commons Collection Tests";
             }
-            catch (final IllegalArgumentException expected)
-            {
-                // do nothing
-            }
-        }
-
-        /**
-         * Tests that the constructor with a null name, probability, size of filter,
-         * and number of functions fails.
-         */
-        @Test
-        public void constructor_pmk_noName() {
 
-            try {
-                new Shape(null, 0.1, 72, 17);
-                fail( "Should throw IllegalArgumentException");
-            }
-            catch (final IllegalArgumentException expected)
-            {
-                // do nothing
+            @Override
+            public long getSignature() {
+                return 0;
             }
-        }
 
-        /**
-         * Tests that if the number of functions is less than 1 an exception is thrown
-         */
-        @Test
-        public void constructor_probability_bits_hash_BadNumberOfHashFunctionsTest() {
-            try {
-                new Shape(testFunction, 0.5, 24, 0);
-                fail( "Should have thrown IllegalArgumentException");
-            } catch (final IllegalArgumentException expected)
-            {
-                //expected
+            @Override
+            public Signedness getSignedness() {
+                return Signedness.SIGNED;
             }
-        }
-
-        /**
-         * Tests the calculated values of calling the constructor with the
-         * probability, number of bits and number of hash functions.
-         */
-        @Test
-        public void constructor_probability_bits_hashTest() {
-            /*
-             * values from https://hur.st/bloomfilter/?n=5&p=.1&m=&k=
-             */
-            final Shape filterConfig = new Shape(testFunction, 0.1, 24, 3);
-
-            assertEquals(24, filterConfig.getNumberOfBits());
-            assertEquals(3, filterConfig.getNumberOfBytes());
-            assertEquals(3, filterConfig.getNumberOfHashFunctions());
-            assertEquals(5, filterConfig.getNumberOfItems());
-            assertEquals(0.100375138, filterConfig.getProbability(), 0.000001);
-        }
-
-        /**
-         * Test equality of shape.
-         */
-        @Test
-        public void equalsTest() {
-
-            assertEquals(new Shape(testFunction, 5, 1.0 / 10), shape);
-            assertNotEquals(new Shape(testFunction, 5, 1.0 / 11), shape);
-            assertNotEquals(new Shape(testFunction, 4, 1.0 / 10), shape);
-
-            final HashFunctionIdentity testFunction2 = new HashFunctionIdentity() {
-
-                @Override
-                public String getName() {
-                    return "Test Function2";
-                }
-
-                @Override
-                public ProcessType getProcessType() {
-                    return ProcessType.CYCLIC;
-                }
-
-                @Override
-                public String getProvider() {
-                    return "Apache Commons Collection Tests";
-                }
+        };
 
-                @Override
-                public long getSignature() {
-                    return 0;
-                }
+        assertNotEquals(new Shape(testFunction2, 4, 1.0 / 10), shape);
 
-                @Override
-                public Signedness getSignedness() {
-                    return Signedness.SIGNED;
-                }};
-
-                assertNotEquals(new Shape(testFunction2, 4, 1.0 / 10), shape);
-
-        }
-
-        /**
-         * Test that hashCode equals hashCode of hashFunctionIdentity
-         */
-        @Test
-        public void hashCodeTest() {
-            final int hashCode = Objects.hash(testFunction, 24, 3 );
-            assertEquals(hashCode, shape.hashCode());
-        }
+    }
 
+    /**
+     * Test that hashCode equals hashCode of hashFunctionIdentity
+     */
+    @Test
+    public void hashCodeTest() {
+        final int hashCode = Objects.hash(testFunction, 24, 3);
+        assertEquals(hashCode, shape.hashCode());
+    }
 
 }