This is an automated email from the ASF dual-hosted git repository. aherbert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-collections.git
commit 1624bdb89eab7a9a0d9018982ca62d134b12af95 Author: Alex Herbert <a.herb...@sussex.ac.uk> AuthorDate: Tue Jun 13 17:16:21 2023 +0100 Move mod tests to BitMapTest Consolidate the cases from EnhancedDoubleHasherTest and BitMapTest. Use Long.remainderUnsigned as the reference result. --- .../collections4/bloomfilter/BitMapTest.java | 34 ++++++++++++++++------ .../bloomfilter/EnhancedDoubleHasherTest.java | 11 ------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/BitMapTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/BitMapTest.java index ab0444e99..00d5df451 100644 --- a/src/test/java/org/apache/commons/collections4/bloomfilter/BitMapTest.java +++ b/src/test/java/org/apache/commons/collections4/bloomfilter/BitMapTest.java @@ -104,18 +104,34 @@ public class BitMapTest { assertTrue(BitMap.contains(ary, 64)); } - private void assertMod(long l, int i) { - assertEquals(Math.floorMod(l, i), BitMap.mod(l, i)); + @Test + public void testMod() { + for (final long dividend : new long[] {0, -1, -2, -3, -6378683, -23567468136887892L, + Long.MIN_VALUE, 345, 678686, 67868768686878924L, Long.MAX_VALUE, Long.MAX_VALUE - 1}) { + for (final int divisor : new int[] {1, 2, 3, 5, 13, Integer.MAX_VALUE, Integer.MAX_VALUE - 1}) { + assertMod(dividend, divisor); + } + } } @Test - public final void testMod() { - assertMod(Long.MAX_VALUE, Integer.MAX_VALUE); - assertMod(Long.MAX_VALUE, Integer.MAX_VALUE-1); - assertThrows(ArithmeticException.class, () -> BitMap.mod(Long.MAX_VALUE, 0)); - assertMod(Long.MAX_VALUE-1, Integer.MAX_VALUE); - assertMod(Long.MAX_VALUE-1, Integer.MAX_VALUE-1); - assertMod(0, Integer.MAX_VALUE); + public void testModEdgeCases() { + for (final long dividend : new long[] {0, -1, 1, Long.MAX_VALUE}) { + assertThrows(ArithmeticException.class, () -> BitMap.mod(dividend, 0)); + } assertNotEquals(Math.floorMod(5, -1), BitMap.mod(5, -1)); } + + /** + * Assert the {@link BitMap#mod(long, int)} method functions as an unsigned modulus. + * + * @param dividend the dividend + * @param divisor the divisor + */ + private void assertMod(long dividend, int divisor) { + assertTrue(divisor > 0 && divisor <= Integer.MAX_VALUE, + "Incorrect usage. Divisor must be strictly positive."); + assertEquals((int) Long.remainderUnsigned(dividend, divisor), BitMap.mod(dividend, divisor), + () -> String.format("failure with dividend=%s and divisor=%s.", dividend, divisor)); + } } diff --git a/src/test/java/org/apache/commons/collections4/bloomfilter/EnhancedDoubleHasherTest.java b/src/test/java/org/apache/commons/collections4/bloomfilter/EnhancedDoubleHasherTest.java index 107a06320..e4e64786f 100644 --- a/src/test/java/org/apache/commons/collections4/bloomfilter/EnhancedDoubleHasherTest.java +++ b/src/test/java/org/apache/commons/collections4/bloomfilter/EnhancedDoubleHasherTest.java @@ -93,15 +93,4 @@ public class EnhancedDoubleHasherTest extends AbstractHasherTest { // test empty buffer assertThrows(IllegalArgumentException.class, () -> new EnhancedDoubleHasher(new byte[0])); } - - @Test - void testModEdgeCases() { - for (final long dividend : new long[] {-1, -2, -3, -6378683, -23567468136887892L, Long.MIN_VALUE, 345, 678686, - 67868768686878924L, Long.MAX_VALUE}) { - for (final int divisor : new int[] {1, 2, 3, 5, 13, Integer.MAX_VALUE}) { - assertEquals((int) Long.remainderUnsigned(dividend, divisor), BitMap.mod(dividend, divisor), - () -> String.format("failure with dividend=%s and divisor=%s.", dividend, divisor)); - } - } - } }