diff options
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 | } |