You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by jw...@apache.org on 2016/10/07 04:01:55 UTC
[3/3] groovy git commit: GROOVY-7961: ObjectRange do not return null
when exhausted (closes #440)
GROOVY-7961: ObjectRange do not return null when exhausted (closes #440)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/445869f4
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/445869f4
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/445869f4
Branch: refs/heads/master
Commit: 445869f433996ff6102e82dac751fa0092bcf1a9
Parents: 2e2e471
Author: John Tompkins <to...@gmail.com>
Authored: Thu Oct 6 19:54:58 2016 -0400
Committer: John Wagenleitner <jw...@apache.org>
Committed: Thu Oct 6 20:48:09 2016 -0700
----------------------------------------------------------------------
src/main/groovy/lang/ObjectRange.java | 6 +++---
.../groovy/lang/BigDecimalObjectRangeTest.java | 1 -
.../groovy/lang/BigIntegerObjectRangeTest.java | 1 -
src/test/groovy/lang/DoubleObjectRangeTest.java | 1 -
src/test/groovy/lang/FloatObjectRangeTest.java | 1 -
src/test/groovy/lang/IntegerObjectRangeTest.java | 1 -
src/test/groovy/lang/LongObjectRangeTest.java | 1 -
src/test/groovy/lang/NumberRangeTestCase.java | 17 ++++-------------
src/test/groovy/lang/ObjectRangeTest.java | 13 +++++++++++++
src/test/groovy/lang/ShortObjectRangeTest.java | 1 -
10 files changed, 20 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/main/groovy/lang/ObjectRange.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/ObjectRange.java b/src/main/groovy/lang/ObjectRange.java
index 8741c9b..1cf392e 100644
--- a/src/main/groovy/lang/ObjectRange.java
+++ b/src/main/groovy/lang/ObjectRange.java
@@ -29,6 +29,7 @@ import java.math.BigInteger;
import java.util.AbstractList;
import java.util.Iterator;
import java.util.List;
+import java.util.NoSuchElementException;
/**
* Represents an inclusive list of objects from a value to a value using
@@ -446,9 +447,8 @@ public class ObjectRange extends AbstractList<Comparable> implements Range<Compa
@Override
public Comparable next() {
// not thread safe
- if (!nextFetched) {
- value = peek();
- nextFetched = true;
+ if (!hasNext()) {
+ throw new NoSuchElementException();
}
nextFetched = false;
index++;
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/BigDecimalObjectRangeTest.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/BigDecimalObjectRangeTest.java b/src/test/groovy/lang/BigDecimalObjectRangeTest.java
index fcaa7b2..6fcc5da 100644
--- a/src/test/groovy/lang/BigDecimalObjectRangeTest.java
+++ b/src/test/groovy/lang/BigDecimalObjectRangeTest.java
@@ -27,7 +27,6 @@ public class BigDecimalObjectRangeTest extends NumberRangeTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- expectNullFromExhausted = true;
}
/**
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/BigIntegerObjectRangeTest.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/BigIntegerObjectRangeTest.java b/src/test/groovy/lang/BigIntegerObjectRangeTest.java
index 15fb61a..70b1b32 100644
--- a/src/test/groovy/lang/BigIntegerObjectRangeTest.java
+++ b/src/test/groovy/lang/BigIntegerObjectRangeTest.java
@@ -27,7 +27,6 @@ public class BigIntegerObjectRangeTest extends NumberRangeTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- expectNullFromExhausted = true;
}
/**
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/DoubleObjectRangeTest.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/DoubleObjectRangeTest.java b/src/test/groovy/lang/DoubleObjectRangeTest.java
index 6d866a2..3ec9dd0 100644
--- a/src/test/groovy/lang/DoubleObjectRangeTest.java
+++ b/src/test/groovy/lang/DoubleObjectRangeTest.java
@@ -27,7 +27,6 @@ public class DoubleObjectRangeTest extends NumberRangeTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- expectNullFromExhausted = true;
}
/**
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/FloatObjectRangeTest.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/FloatObjectRangeTest.java b/src/test/groovy/lang/FloatObjectRangeTest.java
index e46bb48..7ffa9b5 100644
--- a/src/test/groovy/lang/FloatObjectRangeTest.java
+++ b/src/test/groovy/lang/FloatObjectRangeTest.java
@@ -25,7 +25,6 @@ public class FloatObjectRangeTest extends NumberRangeTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- expectNullFromExhausted = true;
}
/**
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/IntegerObjectRangeTest.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/IntegerObjectRangeTest.java b/src/test/groovy/lang/IntegerObjectRangeTest.java
index 29f8adc..968c6d8 100644
--- a/src/test/groovy/lang/IntegerObjectRangeTest.java
+++ b/src/test/groovy/lang/IntegerObjectRangeTest.java
@@ -25,7 +25,6 @@ public class IntegerObjectRangeTest extends NumberRangeTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- expectNullFromExhausted = true;
}
/**
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/LongObjectRangeTest.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/LongObjectRangeTest.java b/src/test/groovy/lang/LongObjectRangeTest.java
index 5d7c8e2..da15aab 100644
--- a/src/test/groovy/lang/LongObjectRangeTest.java
+++ b/src/test/groovy/lang/LongObjectRangeTest.java
@@ -25,7 +25,6 @@ public class LongObjectRangeTest extends NumberRangeTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- expectNullFromExhausted = true;
}
/**
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/NumberRangeTestCase.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/NumberRangeTestCase.java b/src/test/groovy/lang/NumberRangeTestCase.java
index c3ea57f..7e00612 100644
--- a/src/test/groovy/lang/NumberRangeTestCase.java
+++ b/src/test/groovy/lang/NumberRangeTestCase.java
@@ -32,11 +32,6 @@ import java.util.NoSuchElementException;
public abstract class NumberRangeTestCase extends TestCase {
/**
- * legacy ranges in Groovy hush exceptions and return null when exhausted
- */
- protected boolean expectNullFromExhausted = false;
-
- /**
* Records the values passed to a closure.
*/
protected static class RecordingClosure extends Closure {
@@ -429,14 +424,10 @@ public abstract class NumberRangeTestCase extends TestCase {
assertEquals("wrong next value", createValue(next++), value);
}
assertEquals("wrong number of elements in iteration", 6, next);
- if (expectNullFromExhausted) {
- assertNull("got element after iterator finished", iter.next());
- } else {
- try {
- iter.next();
- fail("successfully got element from exhausted iterator");
- } catch(NoSuchElementException ignore) {
- }
+ try {
+ iter.next();
+ fail("successfully got element from exhausted iterator");
+ } catch(NoSuchElementException ignore) {
}
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/ObjectRangeTest.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/ObjectRangeTest.java b/src/test/groovy/lang/ObjectRangeTest.java
index fb64ab2..39f1361 100644
--- a/src/test/groovy/lang/ObjectRangeTest.java
+++ b/src/test/groovy/lang/ObjectRangeTest.java
@@ -25,6 +25,7 @@ import java.math.BigInteger;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
+import java.util.NoSuchElementException;
/**
* Provides unit tests for the <code>ObjectRange</code> class.
@@ -308,6 +309,18 @@ public class ObjectRangeTest extends TestCase {
assertFalse("a != c", a.equals(c));
}
+ public void testIteratorException() {
+ Iterator iter = createRange(1, 2).iterator();
+ iter.next();
+ iter.next();
+ try {
+ iter.next();
+ fail("Should have thrown NoSuchElementException");
+ } catch(NoSuchElementException e) {
+
+ }
+ }
+
public void testIteratorAndStep1() {
Range r = createRange(5, 11);
http://git-wip-us.apache.org/repos/asf/groovy/blob/445869f4/src/test/groovy/lang/ShortObjectRangeTest.java
----------------------------------------------------------------------
diff --git a/src/test/groovy/lang/ShortObjectRangeTest.java b/src/test/groovy/lang/ShortObjectRangeTest.java
index a2d0ccc..67b37bf 100644
--- a/src/test/groovy/lang/ShortObjectRangeTest.java
+++ b/src/test/groovy/lang/ShortObjectRangeTest.java
@@ -25,7 +25,6 @@ public class ShortObjectRangeTest extends NumberRangeTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
- expectNullFromExhausted = true;
}
/**