summaryrefslogtreecommitdiffstats
path: root/document/src/test
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-07-22 22:23:28 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2019-07-22 22:23:28 +0200
commit71d5cd6bd93091b578e864eecb80b14504e5530c (patch)
treeaa0740f9721806e25e329da1f905ca610f8dc64c /document/src/test
parent5101228f266e6cc327be9ef067c4954aa3205016 (diff)
Add short circuit evaluation to the selection engine in java for AND and OR.
Diffstat (limited to 'document/src/test')
-rw-r--r--document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java26
1 files changed, 24 insertions, 2 deletions
diff --git a/document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java b/document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java
index fbf307667d8..5f5de1e8462 100644
--- a/document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java
+++ b/document/src/test/java/com/yahoo/document/select/LogicalNodeTestCase.java
@@ -45,7 +45,7 @@ public class LogicalNodeTestCase {
return ((ResultList)node.evaluate(new Context(null))).toResult();
}
@Test
- public void testFullyExhaustedAnd() {
+ public void testFullyExhaustedAND() {
TracedNode second = new TracedNode(new LiteralNode(true));
assertFalse(second.isEvaluated());
ExpressionNode logical = new LogicNode()
@@ -55,7 +55,7 @@ public class LogicalNodeTestCase {
assertTrue(second.isEvaluated());
}
@Test
- public void testShortCircuitAnd() {
+ public void testShortCircuitAND() {
TracedNode second = new TracedNode(new LiteralNode(true));
assertFalse(second.isEvaluated());
ExpressionNode logical = new LogicNode()
@@ -64,4 +64,26 @@ public class LogicalNodeTestCase {
assertEquals(Result.FALSE, evaluate(logical));
assertFalse(second.isEvaluated());
}
+
+ @Test
+ public void testFullyExhaustedOR() {
+ TracedNode second = new TracedNode(new LiteralNode(true));
+ assertFalse(second.isEvaluated());
+ ExpressionNode logical = new LogicNode()
+ .add(null, new LiteralNode(false))
+ .add("or", second);
+ assertEquals(Result.TRUE, evaluate(logical));
+ assertTrue(second.isEvaluated());
+ }
+
+ @Test
+ public void testShortCircuitOR() {
+ TracedNode second = new TracedNode(new LiteralNode(false));
+ assertFalse(second.isEvaluated());
+ ExpressionNode logical = new LogicNode()
+ .add(null, new LiteralNode(true))
+ .add("or", second);
+ assertEquals(Result.TRUE, evaluate(logical));
+ assertFalse(second.isEvaluated());
+ }
}