diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-04-21 16:07:53 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-04-21 16:07:53 +0200 |
commit | 84eb3fdbd7531d87c09f2a7e25c94f7fa6cdd3e0 (patch) | |
tree | fe9d4f771705cb149194c8a7432235100d88590d | |
parent | cf9e699bef6999602b7801e0d01cc322d034c10b (diff) |
Add ordering test for IntegerBucketResultNode and fix overflow bug.
-rw-r--r-- | searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java | 10 | ||||
-rw-r--r-- | searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java | 13 |
2 files changed, 18 insertions, 5 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java index 4bf33b15ffe..c5d66406fd5 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java @@ -81,11 +81,11 @@ public class IntegerBucketResultNode extends BucketResultNode { return (classId - rhs.getClassId()); } IntegerBucketResultNode b = (IntegerBucketResultNode)rhs; - long diff = from - b.from; - if (diff == 0) { - diff = to - b.to; - } - return ((diff == 0) ? 0 : ((diff < 0) ? -1 : 1)); + if (from < b.from) return -1; + if (from > b.from) return 1; + if (to < b.to) return -1; + if (to > b.to) return 1; + return 0; } @Override diff --git a/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java b/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java index 00c0739ed9a..9c71625a85e 100644 --- a/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java +++ b/searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java @@ -30,4 +30,17 @@ public class IntegerBucketResultNodeTestCase extends ResultNodeTest { assertTrue(dumpNode(bucket).contains("to: 10")); assertCorrectSerialization(bucket, new IntegerBucketResultNode()); } + + private IntegerBucketResultNode createNode(long from, long to) { + return new IntegerBucketResultNode(from, to); + } + + @Test + public void testCmp() { + assertOrder(createNode(Long.MIN_VALUE, 3), createNode(3, 9), createNode(9, Long.MAX_VALUE)); + assertOrder(createNode(6, 9), createNode(7, 9), createNode(8, 9)); + assertOrder(createNode(6, 7), createNode(6, 8), createNode(6, 9)); + assertOrder(createNode(6, 3), createNode(7, 2), createNode(8, 1)); + assertTrue(createNode(6, 8).onCmp(new NullResultNode()) != 0); + } } |