diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-07-22 22:23:28 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-07-22 22:23:28 +0200 |
commit | 71d5cd6bd93091b578e864eecb80b14504e5530c (patch) | |
tree | aa0740f9721806e25e329da1f905ca610f8dc64c /document/src/test | |
parent | 5101228f266e6cc327be9ef067c4954aa3205016 (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.java | 26 |
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()); + } } |