MATH-1463: Abide by class "Iterator" contract.
This commit is contained in:
parent
e37de249b1
commit
00a0c6cb86
|
@ -54,6 +54,9 @@ If the output is not quite correct, check for invisible trailing spaces!
|
||||||
</release>
|
</release>
|
||||||
|
|
||||||
<release version="4.0" date="XXXX-XX-XX" description="">
|
<release version="4.0" date="XXXX-XX-XX" description="">
|
||||||
|
<action dev="erans" type="fix" issue="MATH-1463">
|
||||||
|
"IntegerSequence.incrementor": Throw "NoSuchElementException" from "next" method.
|
||||||
|
</action>
|
||||||
<action dev="erans" type="add" issue="MATH-1459" due-to="Adrian Porter">
|
<action dev="erans" type="add" issue="MATH-1459" due-to="Adrian Porter">
|
||||||
Create a way to automatically calculate a Jacobian matrix using a differentiator.
|
Create a way to automatically calculate a Jacobian matrix using a differentiator.
|
||||||
</action>
|
</action>
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
package org.apache.commons.math4.util;
|
package org.apache.commons.math4.util;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
import org.apache.commons.math4.exception.MaxCountExceededException;
|
import org.apache.commons.math4.exception.MaxCountExceededException;
|
||||||
import org.apache.commons.math4.exception.NullArgumentException;
|
import org.apache.commons.math4.exception.NullArgumentException;
|
||||||
import org.apache.commons.math4.exception.MathUnsupportedOperationException;
|
import org.apache.commons.math4.exception.MathUnsupportedOperationException;
|
||||||
|
@ -352,9 +353,14 @@ public class IntegerSequence {
|
||||||
/** {@inheritDoc} */
|
/** {@inheritDoc} */
|
||||||
@Override
|
@Override
|
||||||
public Integer next() {
|
public Integer next() {
|
||||||
final int value = count;
|
if (canIncrement(0)) {
|
||||||
count += increment;
|
final int value = count;
|
||||||
return value;
|
count += increment;
|
||||||
|
return value;
|
||||||
|
} else {
|
||||||
|
// Contract for "Iterator".
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -15,6 +15,7 @@ package org.apache.commons.math4.util;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
import org.apache.commons.math4.exception.MaxCountExceededException;
|
import org.apache.commons.math4.exception.MaxCountExceededException;
|
||||||
import org.apache.commons.math4.exception.TooManyEvaluationsException;
|
import org.apache.commons.math4.exception.TooManyEvaluationsException;
|
||||||
import org.apache.commons.math4.exception.NotStrictlyPositiveException;
|
import org.apache.commons.math4.exception.NotStrictlyPositiveException;
|
||||||
|
@ -274,6 +275,29 @@ public class IntegerSequenceTest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testIteratorNext() {
|
||||||
|
final int start = 1;
|
||||||
|
final int max = 2;
|
||||||
|
final int step = 1;
|
||||||
|
|
||||||
|
final IntegerSequence.Incrementor inc
|
||||||
|
= IntegerSequence.Incrementor.create()
|
||||||
|
.withStart(start)
|
||||||
|
.withMaximalCount(max)
|
||||||
|
.withIncrement(step);
|
||||||
|
|
||||||
|
Assert.assertTrue(inc.hasNext());
|
||||||
|
Assert.assertEquals(1, inc.next().intValue());
|
||||||
|
Assert.assertFalse(inc.hasNext());
|
||||||
|
try {
|
||||||
|
inc.next();
|
||||||
|
Assert.fail("exception expected");
|
||||||
|
} catch (NoSuchElementException e) {
|
||||||
|
// Expected.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test(expected=TooManyEvaluationsException.class)
|
@Test(expected=TooManyEvaluationsException.class)
|
||||||
public void testIncrementorAlternateException() {
|
public void testIncrementorAlternateException() {
|
||||||
final int start = 1;
|
final int start = 1;
|
||||||
|
|
Loading…
Reference in New Issue