Skip to content

Commit

Permalink
interval fix iteration on open intervals
Browse files Browse the repository at this point in the history
  • Loading branch information
5pilow committed Dec 22, 2023
1 parent 98a9cba commit 5ac4b07
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ public static class IntervalIterator implements Iterator<Entry<Object, Object>>

public IntervalIterator(IntegerIntervalLeekValue interval) {
this.interval = interval;
this.x = interval.from;
this.x = interval.minClosed ? interval.from : interval.from + 1;
}

@Override
public boolean hasNext() {
return x <= interval.to;
return interval.maxClosed ? x <= interval.to : x < interval.to;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@ public static class IntervalIterator implements Iterator<Entry<Object, Object>>

public IntervalIterator(RealIntervalLeekValue interval) {
this.interval = interval;
this.x = interval.from;
this.x = interval.minClosed ? interval.from : interval.from + 1;
}

@Override
public boolean hasNext() {
return x <= interval.to;
return interval.maxClosed ? x <= interval.to : x < interval.to;
}

@Override
Expand Down
9 changes: 8 additions & 1 deletion src/test/java/test/TestInterval.java
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,13 @@ public void run() throws Exception {
code_v4_("return [1..4][:2:]").equals("[1.0, 2.0]");

section("Interval iteration");
code("var i = [0..5] var x = 0 for (var y in i) x += y return x").equals("15");
code("var i = [1..5] var x = 0 for (var y in i) x += y return x").equals("15");
code("var i = [1..5[ var x = 0 for (var y in i) x += y return x").equals("10");
code("var i = ]1..5] var x = 0 for (var y in i) x += y return x").equals("14");
code("var i = ]1..5[ var x = 0 for (var y in i) x += y return x").equals("9");
code("var i = [1.0..5.0] var x = 0.0 for (var y in i) x += y return x").equals("15.0");
code("var i = [1.0..5.0[ var x = 0.0 for (var y in i) x += y return x").equals("10.0");
code("var i = ]1.0..5.0] var x = 0.0 for (var y in i) x += y return x").equals("14.0");
code("var i = ]1.0..5.0[ var x = 0.0 for (var y in i) x += y return x").equals("9.0");
}
}

0 comments on commit 5ac4b07

Please sign in to comment.