aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-04-21 16:07:53 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2022-04-21 16:07:53 +0200
commit84eb3fdbd7531d87c09f2a7e25c94f7fa6cdd3e0 (patch)
treefe9d4f771705cb149194c8a7432235100d88590d
parentcf9e699bef6999602b7801e0d01cc322d034c10b (diff)
Add ordering test for IntegerBucketResultNode and fix overflow bug.
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/IntegerBucketResultNode.java10
-rw-r--r--searchlib/src/test/java/com/yahoo/searchlib/expression/IntegerBucketResultNodeTestCase.java13
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);
+ }
}