From e2222af89aae9b91dac401908172525cbdca1235 Mon Sep 17 00:00:00 2001 From: Navin Singh Date: Mon, 20 Jun 2022 05:22:23 +0530 Subject: [PATCH 1/3] handle nulls in Range based hash functions --- core/src/main/java/zingg/hash/RangeDbl.java | 2 +- core/src/main/java/zingg/hash/RangeInt.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/zingg/hash/RangeDbl.java b/core/src/main/java/zingg/hash/RangeDbl.java index e6a035f42..a6809ac61 100644 --- a/core/src/main/java/zingg/hash/RangeDbl.java +++ b/core/src/main/java/zingg/hash/RangeDbl.java @@ -17,7 +17,7 @@ public RangeDbl(int lower, int upper) { @Override public Integer call(Double field) { int withinRange = 0; - if (field >= lowerLimit && field < upperLimit) { + if (field != null && field >= lowerLimit && field < upperLimit) { withinRange = 1; } return withinRange; diff --git a/core/src/main/java/zingg/hash/RangeInt.java b/core/src/main/java/zingg/hash/RangeInt.java index 7fe8ab279..5c1194737 100644 --- a/core/src/main/java/zingg/hash/RangeInt.java +++ b/core/src/main/java/zingg/hash/RangeInt.java @@ -17,7 +17,7 @@ public RangeInt(int lower, int upper) { @Override public Integer call(Integer field) { int withinRange = 0; - if (field >= lowerLimit && field < upperLimit) { + if (field != null && field >= lowerLimit && field < upperLimit) { withinRange = 1; } return withinRange; From a32b0d62e0bc82db1a7184618798d1d13d06f7af Mon Sep 17 00:00:00 2001 From: Navin Singh Date: Tue, 21 Jun 2022 07:13:54 +0530 Subject: [PATCH 2/3] testcases for Range hash fns to check 'null' input value --- core/src/test/java/zingg/hash/TestLessThanZeroInt.java | 2 +- .../src/test/java/zingg/hash/TestRangeBetween0And10Dbl.java | 6 +++++- .../src/test/java/zingg/hash/TestRangeBetween0And10Int.java | 5 +++++ .../java/zingg/hash/TestRangeBetween1000And10000Dbl.java | 5 +++++ .../java/zingg/hash/TestRangeBetween1000And10000Int.java | 5 +++++ .../test/java/zingg/hash/TestRangeBetween100And1000Dbl.java | 5 +++++ .../test/java/zingg/hash/TestRangeBetween100And1000Int.java | 5 +++++ .../test/java/zingg/hash/TestRangeBetween10And100Dbl.java | 5 +++++ .../test/java/zingg/hash/TestRangeBetween10And100Int.java | 5 +++++ 9 files changed, 41 insertions(+), 2 deletions(-) diff --git a/core/src/test/java/zingg/hash/TestLessThanZeroInt.java b/core/src/test/java/zingg/hash/TestLessThanZeroInt.java index ae64648f6..a13e46f8d 100644 --- a/core/src/test/java/zingg/hash/TestLessThanZeroInt.java +++ b/core/src/test/java/zingg/hash/TestLessThanZeroInt.java @@ -15,7 +15,7 @@ public void testLessThanZeroIntForValueZero() { @Test public void testLessThanZeroDblForValueNull() { - LessThanZeroDbl value = new LessThanZeroDbl(); + LessThanZeroInt value = new LessThanZeroInt(); assertFalse(value.call(null)); } diff --git a/core/src/test/java/zingg/hash/TestRangeBetween0And10Dbl.java b/core/src/test/java/zingg/hash/TestRangeBetween0And10Dbl.java index 00467b369..a5a1ea7aa 100644 --- a/core/src/test/java/zingg/hash/TestRangeBetween0And10Dbl.java +++ b/core/src/test/java/zingg/hash/TestRangeBetween0And10Dbl.java @@ -48,5 +48,9 @@ public void testRangeForValue8637() { RangeDbl value = new RangeBetween0And10Dbl(); assertEquals(0, value.call(8637d)); } - + @Test + public void testRangeForNull() { + RangeDbl value = new RangeBetween0And10Dbl(); + assertEquals(0, value.call(null)); + } } diff --git a/core/src/test/java/zingg/hash/TestRangeBetween0And10Int.java b/core/src/test/java/zingg/hash/TestRangeBetween0And10Int.java index e82edd87e..3cd597d91 100644 --- a/core/src/test/java/zingg/hash/TestRangeBetween0And10Int.java +++ b/core/src/test/java/zingg/hash/TestRangeBetween0And10Int.java @@ -46,5 +46,10 @@ public void testRangeForValue8637() { RangeInt value = new RangeBetween0And10Int(); assertEquals(0, value.call(8637)); } + @Test + public void testRangeForNull() { + RangeInt value = new RangeBetween0And10Int(); + assertEquals(0, value.call(null)); + } } diff --git a/core/src/test/java/zingg/hash/TestRangeBetween1000And10000Dbl.java b/core/src/test/java/zingg/hash/TestRangeBetween1000And10000Dbl.java index e782d0d76..428ba9561 100644 --- a/core/src/test/java/zingg/hash/TestRangeBetween1000And10000Dbl.java +++ b/core/src/test/java/zingg/hash/TestRangeBetween1000And10000Dbl.java @@ -48,5 +48,10 @@ public void testRangeLessThan10000() { RangeDbl value = new RangeBetween1000And10000Dbl(); assertEquals(1, value.call(8637d)); } + @Test + public void testRangeForNull() { + RangeDbl value = new RangeBetween1000And10000Dbl(); + assertEquals(0, value.call(null)); + } } diff --git a/core/src/test/java/zingg/hash/TestRangeBetween1000And10000Int.java b/core/src/test/java/zingg/hash/TestRangeBetween1000And10000Int.java index 1b56af4d5..1cd0c6d4a 100644 --- a/core/src/test/java/zingg/hash/TestRangeBetween1000And10000Int.java +++ b/core/src/test/java/zingg/hash/TestRangeBetween1000And10000Int.java @@ -47,5 +47,10 @@ public void testRangeForValue8637() { RangeInt value = new RangeBetween1000And10000Int(); assertEquals(1, value.call(8637)); } + @Test + public void testRangeForNull() { + RangeInt value = new RangeBetween1000And10000Int(); + assertEquals(0, value.call(null)); + } } diff --git a/core/src/test/java/zingg/hash/TestRangeBetween100And1000Dbl.java b/core/src/test/java/zingg/hash/TestRangeBetween100And1000Dbl.java index 6900f410f..11438140e 100644 --- a/core/src/test/java/zingg/hash/TestRangeBetween100And1000Dbl.java +++ b/core/src/test/java/zingg/hash/TestRangeBetween100And1000Dbl.java @@ -49,5 +49,10 @@ public void testRangeForValue8637() { RangeDbl value = new RangeBetween100And1000Dbl(); assertEquals(0, value.call(8637d)); } + @Test + public void testRangeForNull() { + RangeDbl value = new RangeBetween100And1000Dbl(); + assertEquals(0, value.call(null)); + } } diff --git a/core/src/test/java/zingg/hash/TestRangeBetween100And1000Int.java b/core/src/test/java/zingg/hash/TestRangeBetween100And1000Int.java index ff4dd8f58..5cf12d765 100644 --- a/core/src/test/java/zingg/hash/TestRangeBetween100And1000Int.java +++ b/core/src/test/java/zingg/hash/TestRangeBetween100And1000Int.java @@ -46,5 +46,10 @@ public void testRangeForValue8637() { RangeInt value = new RangeBetween100And1000Int(); assertEquals(0, value.call(8637)); } + @Test + public void testRangeForNull() { + RangeInt value = new RangeBetween100And1000Int(); + assertEquals(0, value.call(null)); + } } diff --git a/core/src/test/java/zingg/hash/TestRangeBetween10And100Dbl.java b/core/src/test/java/zingg/hash/TestRangeBetween10And100Dbl.java index 5ac178ded..8b1fec7a6 100644 --- a/core/src/test/java/zingg/hash/TestRangeBetween10And100Dbl.java +++ b/core/src/test/java/zingg/hash/TestRangeBetween10And100Dbl.java @@ -49,5 +49,10 @@ public void testRangeForValue8637() { RangeDbl value = new RangeBetween10And100Dbl(); assertEquals(0, value.call(8637d)); } + @Test + public void testRangeForNull() { + RangeDbl value = new RangeBetween10And100Dbl(); + assertEquals(0, value.call(null)); + } } diff --git a/core/src/test/java/zingg/hash/TestRangeBetween10And100Int.java b/core/src/test/java/zingg/hash/TestRangeBetween10And100Int.java index b01f26aba..15ddc1419 100644 --- a/core/src/test/java/zingg/hash/TestRangeBetween10And100Int.java +++ b/core/src/test/java/zingg/hash/TestRangeBetween10And100Int.java @@ -46,5 +46,10 @@ public void testRangeForValue8637() { RangeInt value = new RangeBetween10And100Int(); assertEquals(0, value.call(8637)); } + @Test + public void testRangeForNull() { + RangeInt value = new RangeBetween10And100Int(); + assertEquals(0, value.call(null)); + } } From 6981849940e26e4a3ac22cb1aaf550c0dc2f0c35 Mon Sep 17 00:00:00 2001 From: Navin Singh Date: Tue, 21 Jun 2022 07:30:56 +0530 Subject: [PATCH 3/3] corrected function name --- core/src/test/java/zingg/hash/TestLessThanZeroInt.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/test/java/zingg/hash/TestLessThanZeroInt.java b/core/src/test/java/zingg/hash/TestLessThanZeroInt.java index a13e46f8d..4a93f713c 100644 --- a/core/src/test/java/zingg/hash/TestLessThanZeroInt.java +++ b/core/src/test/java/zingg/hash/TestLessThanZeroInt.java @@ -14,7 +14,7 @@ public void testLessThanZeroIntForValueZero() { } @Test - public void testLessThanZeroDblForValueNull() { + public void testLessThanZeroIntForValueNull() { LessThanZeroInt value = new LessThanZeroInt(); assertFalse(value.call(null)); }