aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationMode.java9
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationOperator.xtend4
-rw-r--r--Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SumTest.xtend8
3 files changed, 15 insertions, 6 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationMode.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationMode.java
index f5bd2efc..66dcb00f 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationMode.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationMode.java
@@ -21,6 +21,11 @@ public enum IntervalAggregationMode implements BinaryOperator<Interval> {
21 } 21 }
22 }; 22 };
23 } 23 }
24
25 @Override
26 public Interval getNeutral() {
27 return Interval.ZERO;
28 }
24 }, 29 },
25 30
26 JOIN("intervalJoin", "Calculate the smallest interval containing all the intervals in a set") { 31 JOIN("intervalJoin", "Calculate the smallest interval containing all the intervals in a set") {
@@ -63,4 +68,8 @@ public enum IntervalAggregationMode implements BinaryOperator<Interval> {
63 } 68 }
64 69
65 public abstract IntervalRedBlackNode createNode(Interval interval); 70 public abstract IntervalRedBlackNode createNode(Interval interval);
71
72 public Interval getNeutral() {
73 return Interval.EMPTY;
74 }
66} 75}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationOperator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationOperator.xtend
index 940c71bb..21d3d73b 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationOperator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/interval/IntervalAggregationOperator.xtend
@@ -36,13 +36,13 @@ class IntervalAggregationOperator implements IMultisetAggregationOperator<Interv
36 36
37 override getAggregate(IntervalRedBlackNode result) { 37 override getAggregate(IntervalRedBlackNode result) {
38 if (result.leaf) { 38 if (result.leaf) {
39 null 39 mode.neutral
40 } else { 40 } else {
41 result.result 41 result.result
42 } 42 }
43 } 43 }
44 44
45 override aggregateStream(Stream<Interval> stream) { 45 override aggregateStream(Stream<Interval> stream) {
46 stream.reduce(mode).orElse(null) 46 stream.reduce(mode).orElse(mode.neutral)
47 } 47 }
48} 48}
diff --git a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SumTest.xtend b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SumTest.xtend
index cbd7e71f..530c081c 100644
--- a/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SumTest.xtend
+++ b/Tests/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.tests/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/tests/interval/SumTest.xtend
@@ -24,7 +24,7 @@ class SumTest {
24 24
25 @Test 25 @Test
26 def void emptyTest() { 26 def void emptyTest() {
27 assertEquals(null) 27 assertEquals(ZERO)
28 } 28 }
29 29
30 @Test 30 @Test
@@ -37,7 +37,7 @@ class SumTest {
37 def void addRemoveTest() { 37 def void addRemoveTest() {
38 add(between(-1, 1)) 38 add(between(-1, 1))
39 remove(between(-1, 1)) 39 remove(between(-1, 1))
40 assertEquals(null) 40 assertEquals(ZERO)
41 } 41 }
42 42
43 @Test 43 @Test
@@ -79,7 +79,7 @@ class SumTest {
79 remove(between(-1, 1)) 79 remove(between(-1, 1))
80 remove(between(-1, 1)) 80 remove(between(-1, 1))
81 remove(between(-1, 1)) 81 remove(between(-1, 1))
82 assertEquals(null) 82 assertEquals(ZERO)
83 } 83 }
84 84
85 @Test 85 @Test
@@ -108,7 +108,7 @@ class SumTest {
108 } else { 108 } else {
109 current.remove(interval) 109 current.remove(interval)
110 } 110 }
111 val expected = current.stream.reduce(aggregator.mode).orElse(null) 111 val expected = current.stream.reduce(aggregator.mode).orElse(ZERO)
112 update(interval, isInsert) 112 update(interval, isInsert)
113 assertEquals(expected) 113 assertEquals(expected)
114 } 114 }