diff --git a/src/Numerics/Integration/Algorithms/NewtonCotesTrapeziumRule.cs b/src/Numerics/Integration/Algorithms/NewtonCotesTrapeziumRule.cs
index f15efe1d..6b635b3d 100644
--- a/src/Numerics/Integration/Algorithms/NewtonCotesTrapeziumRule.cs
+++ b/src/Numerics/Integration/Algorithms/NewtonCotesTrapeziumRule.cs
@@ -183,66 +183,67 @@ namespace MathNet.Numerics.Integration.Algorithms
double linearOffset = 0.5 * (intervalEnd + intervalBegin);
targetRelativeError /= 5 * linearSlope;
- var abcissasIterator = levelAbscissas.GetEnumerator();
- var weightsIterator = levelWeights.GetEnumerator();
+ using (var abcissasIterator = levelAbscissas.GetEnumerator())
+ using (var weightsIterator = levelWeights.GetEnumerator())
+ {
+ double step = levelOneStep;
- double step = levelOneStep;
+ // First Level
+ abcissasIterator.MoveNext();
+ weightsIterator.MoveNext();
+ double[] abcissasL1 = abcissasIterator.Current;
+ double[] weightsL1 = weightsIterator.Current;
- // First Level
- abcissasIterator.MoveNext();
- weightsIterator.MoveNext();
- double[] abcissasL1 = abcissasIterator.Current;
- double[] weightsL1 = weightsIterator.Current;
+ double sum = f(linearOffset) * weightsL1[0];
+ for (int i = 1; i < abcissasL1.Length; i++)
+ {
+ sum += weightsL1[i] * (f((linearSlope * abcissasL1[i]) + linearOffset) + f(-(linearSlope * abcissasL1[i]) + linearOffset));
+ }
- double sum = f(linearOffset) * weightsL1[0];
- for (int i = 1; i < abcissasL1.Length; i++)
- {
- sum += weightsL1[i] * (f((linearSlope * abcissasL1[i]) + linearOffset) + f(-(linearSlope * abcissasL1[i]) + linearOffset));
- }
+ sum *= step;
- sum *= step;
+ // Additional Levels
+ double previousDelta = double.MaxValue;
+ for (int level = 1; abcissasIterator.MoveNext() && weightsIterator.MoveNext(); level++)
+ {
+ double[] abcissas = abcissasIterator.Current;
+ double[] weights = weightsIterator.Current;
- // Additional Levels
- double previousDelta = double.MaxValue;
- for (int level = 1; abcissasIterator.MoveNext() && weightsIterator.MoveNext(); level++)
- {
- double[] abcissas = abcissasIterator.Current;
- double[] weights = weightsIterator.Current;
+ double midpointsum = 0;
+ for (int i = 0; i < abcissas.Length; i++)
+ {
+ midpointsum += weights[i] * (f((linearSlope * abcissas[i]) + linearOffset) + f(-(linearSlope * abcissas[i]) + linearOffset));
+ }
- double midpointsum = 0;
- for (int i = 0; i < abcissas.Length; i++)
- {
- midpointsum += weights[i] * (f((linearSlope * abcissas[i]) + linearOffset) + f(-(linearSlope * abcissas[i]) + linearOffset));
- }
+ midpointsum *= step;
+ sum = 0.5 * (sum + midpointsum);
+ step *= 0.5;
- midpointsum *= step;
- sum = 0.5 * (sum + midpointsum);
- step *= 0.5;
+ double delta = Math.Abs(sum - midpointsum);
- double delta = Math.Abs(sum - midpointsum);
+ if (level == 1)
+ {
+ previousDelta = delta;
+ continue;
+ }
- if (level == 1)
- {
+ double r = Math.Log(delta) / Math.Log(previousDelta);
previousDelta = delta;
- continue;
- }
- double r = Math.Log(delta) / Math.Log(previousDelta);
- previousDelta = delta;
+ if (r > 1.9 && r < 2.1)
+ {
+ // convergence region
+ delta = Math.Sqrt(delta);
+ }
- if (r > 1.9 && r < 2.1)
- {
- // convergence region
- delta = Math.Sqrt(delta);
+ if (sum.AlmostEqualWithRelativeError(midpointsum, delta, targetRelativeError))
+ {
+ break;
+ }
}
- if (sum.AlmostEqualWithRelativeError(midpointsum, delta, targetRelativeError))
- {
- break;
- }
+ return sum * linearSlope;
}
-
- return sum * linearSlope;
}
}
}
diff --git a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs
index c4c75eeb..3e8916fb 100644
--- a/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs
+++ b/src/Numerics/LinearAlgebra/Complex/Solvers/Iterator.cs
@@ -179,11 +179,11 @@ namespace MathNet.Numerics.LinearAlgebra.Complex.Solvers
/// Gets an IEnumerator that enumerates over all the stored stop criteria.
///
/// Used for testing only.
- internal IEnumerator StoredStopCriteria
+ internal IEnumerable StoredStopCriteria
{
get
{
- return _stopCriterias.Select(criterium => criterium.Value).GetEnumerator();
+ return _stopCriterias.Select(criterium => criterium.Value);
}
}
diff --git a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs
index 008091fb..3002f188 100644
--- a/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs
+++ b/src/Numerics/LinearAlgebra/Complex32/Solvers/Iterator.cs
@@ -179,11 +179,11 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32.Solvers
/// Gets an IEnumerator that enumerates over all the stored stop criteria.
///
/// Used for testing only.
- internal IEnumerator StoredStopCriteria
+ internal IEnumerable StoredStopCriteria
{
get
{
- return _stopCriterias.Select(criterium => criterium.Value).GetEnumerator();
+ return _stopCriterias.Select(criterium => criterium.Value);
}
}
diff --git a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs
index 98361b7e..307b41fa 100644
--- a/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs
+++ b/src/Numerics/LinearAlgebra/Double/Solvers/Iterator.cs
@@ -179,11 +179,11 @@ namespace MathNet.Numerics.LinearAlgebra.Double.Solvers
/// Gets an IEnumerator that enumerates over all the stored stop criteria.
///
/// Used for testing only.
- internal IEnumerator StoredStopCriteria
+ internal IEnumerable StoredStopCriteria
{
get
{
- return _stopCriterias.Select(criterium => criterium.Value).GetEnumerator();
+ return _stopCriterias.Select(criterium => criterium.Value);
}
}
diff --git a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs
index ad01b5fa..f2fe30c6 100644
--- a/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs
+++ b/src/Numerics/LinearAlgebra/Single/Solvers/Iterator.cs
@@ -179,11 +179,11 @@ namespace MathNet.Numerics.LinearAlgebra.Single.Solvers
/// Gets an IEnumerator that enumerates over all the stored stop criteria.
///
/// Used for testing only.
- internal IEnumerator StoredStopCriteria
+ internal IEnumerable StoredStopCriteria
{
get
{
- return _stopCriterias.Select(criterium => criterium.Value).GetEnumerator();
+ return _stopCriterias.Select(criterium => criterium.Value);
}
}
diff --git a/src/Numerics/Statistics/Correlation.cs b/src/Numerics/Statistics/Correlation.cs
index 698ae8c0..e811f1a7 100644
--- a/src/Numerics/Statistics/Correlation.cs
+++ b/src/Numerics/Statistics/Correlation.cs
@@ -49,27 +49,31 @@ namespace MathNet.Numerics.Statistics
{
int n = 0;
double r = 0.0;
+
+ // BUG: PERFORMANCE degraded due to tripple iteration over both IEnumerables
+
double meanA = dataA.Mean();
double meanB = dataB.Mean();
double sdevA = dataA.StandardDeviation();
double sdevB = dataB.StandardDeviation();
- IEnumerator ieA = dataA.GetEnumerator();
- IEnumerator ieB = dataB.GetEnumerator();
-
- while (ieA.MoveNext())
+ using (IEnumerator ieA = dataA.GetEnumerator())
+ using (IEnumerator ieB = dataB.GetEnumerator())
{
- if (ieB.MoveNext() == false)
+ while (ieA.MoveNext())
{
- throw new ArgumentOutOfRangeException("Datasets dataA and dataB need to have the same length.");
- }
+ if (!ieB.MoveNext())
+ {
+ throw new ArgumentOutOfRangeException("dataB", "Datasets dataA and dataB need to have the same length. dataB is shorter.");
+ }
- n++;
- r += (ieA.Current - meanA) * (ieB.Current - meanB) / (sdevA * sdevB);
- }
- if (ieB.MoveNext() == true)
- {
- throw new ArgumentOutOfRangeException("Datasets dataA and dataB need to have the same length.");
+ n++;
+ r += (ieA.Current - meanA) * (ieB.Current - meanB) / (sdevA * sdevB);
+ }
+ if (ieB.MoveNext())
+ {
+ throw new ArgumentOutOfRangeException("dataA", "Datasets dataA and dataB need to have the same length. dataA is shorter.");
+ }
}
return r / (n - 1);
diff --git a/src/Numerics/Statistics/Statistics.cs b/src/Numerics/Statistics/Statistics.cs
index 6b76b6ef..a95c2732 100644
--- a/src/Numerics/Statistics/Statistics.cs
+++ b/src/Numerics/Statistics/Statistics.cs
@@ -102,20 +102,22 @@ namespace MathNet.Numerics.Statistics
double t = 0;
ulong j = 0;
- IEnumerator iterator = data.GetEnumerator();
- if (iterator.MoveNext())
+ using (IEnumerator iterator = data.GetEnumerator())
{
- j++;
- t = iterator.Current;
- }
+ if (iterator.MoveNext())
+ {
+ j++;
+ t = iterator.Current;
+ }
- while (iterator.MoveNext())
- {
- j++;
- double xi = iterator.Current;
- t += xi;
- double diff = (j * xi) - t;
- variance += (diff * diff) / (j * (j - 1));
+ while (iterator.MoveNext())
+ {
+ j++;
+ double xi = iterator.Current;
+ t += xi;
+ double diff = (j * xi) - t;
+ variance += (diff * diff) / (j * (j - 1));
+ }
}
return variance / (j - 1);
@@ -137,33 +139,34 @@ namespace MathNet.Numerics.Statistics
double t = 0;
ulong j = 0;
- IEnumerator iterator = data.GetEnumerator();
-
- while (true)
+ using (IEnumerator iterator = data.GetEnumerator())
{
- bool hasNext = iterator.MoveNext();
- if (!hasNext)
+ while (true)
{
- break;
- }
+ bool hasNext = iterator.MoveNext();
+ if (!hasNext)
+ {
+ break;
+ }
- if (iterator.Current.HasValue)
- {
- j++;
- t = iterator.Current.Value;
- break;
+ if (iterator.Current.HasValue)
+ {
+ j++;
+ t = iterator.Current.Value;
+ break;
+ }
}
- }
- while (iterator.MoveNext())
- {
- if (iterator.Current.HasValue)
+ while (iterator.MoveNext())
{
- j++;
- double xi = iterator.Current.Value;
- t += xi;
- double diff = (j * xi) - t;
- variance += (diff * diff) / (j * (j - 1));
+ if (iterator.Current.HasValue)
+ {
+ j++;
+ double xi = iterator.Current.Value;
+ t += xi;
+ double diff = (j * xi) - t;
+ variance += (diff * diff) / (j * (j - 1));
+ }
}
}
@@ -186,20 +189,22 @@ namespace MathNet.Numerics.Statistics
double t = 0;
ulong j = 0;
- IEnumerator iterator = data.GetEnumerator();
- if (iterator.MoveNext())
+ using (IEnumerator iterator = data.GetEnumerator())
{
- j++;
- t = iterator.Current;
- }
+ if (iterator.MoveNext())
+ {
+ j++;
+ t = iterator.Current;
+ }
- while (iterator.MoveNext())
- {
- j++;
- double xi = iterator.Current;
- t += xi;
- double diff = (j * xi) - t;
- variance += (diff * diff) / (j * (j - 1));
+ while (iterator.MoveNext())
+ {
+ j++;
+ double xi = iterator.Current;
+ t += xi;
+ double diff = (j * xi) - t;
+ variance += (diff * diff) / (j * (j - 1));
+ }
}
return variance / j;
@@ -221,33 +226,34 @@ namespace MathNet.Numerics.Statistics
double t = 0;
ulong j = 0;
- IEnumerator iterator = data.GetEnumerator();
-
- while (true)
+ using (IEnumerator iterator = data.GetEnumerator())
{
- bool hasNext = iterator.MoveNext();
- if (!hasNext)
+ while (true)
{
- break;
- }
+ bool hasNext = iterator.MoveNext();
+ if (!hasNext)
+ {
+ break;
+ }
- if (iterator.Current.HasValue)
- {
- j++;
- t = iterator.Current.Value;
- break;
+ if (iterator.Current.HasValue)
+ {
+ j++;
+ t = iterator.Current.Value;
+ break;
+ }
}
- }
- while (iterator.MoveNext())
- {
- if (iterator.Current.HasValue)
+ while (iterator.MoveNext())
{
- j++;
- double xi = iterator.Current.Value;
- t += xi;
- double diff = (j * xi) - t;
- variance += (diff * diff) / (j * (j - 1));
+ if (iterator.Current.HasValue)
+ {
+ j++;
+ double xi = iterator.Current.Value;
+ t += xi;
+ double diff = (j * xi) - t;
+ variance += (diff * diff) / (j * (j - 1));
+ }
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
index f228ff55..08a78a86 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
@@ -536,61 +536,62 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public override void CanUseIndexedEnumerator()
{
var matrix = TestMatrices["Singular3x3"];
- var enumerator = matrix.IndexedEnumerator().GetEnumerator();
-
- enumerator.MoveNext();
- var item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(Complex.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(Complex.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(Complex.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(Complex.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(Complex.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(Complex.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(Complex.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(new Complex(3.0, 1.0), item.Item3);
+ using (var enumerator = matrix.IndexedEnumerator().GetEnumerator())
+ {
+ enumerator.MoveNext();
+ var item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(Complex.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(Complex.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(Complex.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(Complex.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(Complex.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(Complex.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(Complex.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(new Complex(3.0, 1.0), item.Item3);
+ }
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs
index a5abd476..4e6a54ba 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs
@@ -1893,61 +1893,62 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
public virtual void CanUseIndexedEnumerator()
{
var matrix = TestMatrices["Singular3x3"];
- var enumerator = matrix.IndexedEnumerator().GetEnumerator();
-
- enumerator.MoveNext();
- var item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(new Complex(2.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(new Complex(2.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(new Complex(2.0, 1.0), item.Item3);
+ using (var enumerator = matrix.IndexedEnumerator().GetEnumerator())
+ {
+ enumerator.MoveNext();
+ var item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(new Complex(2.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(new Complex(2.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(new Complex(1.0, 1.0), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(new Complex(2.0, 1.0), item.Item3);
+ }
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs
index e15ff400..76136223 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex/Solvers/IteratorTest.cs
@@ -104,10 +104,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
// Check that we have all the criteria
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
- var enumerator = iterator.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in iterator.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => ReferenceEquals(c, criterium)), "Criterium missing");
}
}
@@ -159,10 +157,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
// Check that we have all the criteria
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
- var enumerator = iterator.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in iterator.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => ReferenceEquals(c, criterium)), "Criterium missing");
}
}
@@ -418,11 +414,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers
Assert.AreEqual(iterator.NumberOfCriteria, clone.NumberOfCriteria, "Incorrect criterium count");
// ReSharper restore PossibleNullReferenceException
- var enumerator = clone.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in clone.StoredStopCriteria)
{
- var criterium = enumerator.Current;
- Assert.IsTrue(criteria.Exists(c => c.GetType().Equals(criterium.GetType())), "Criterium missing");
+ Assert.IsTrue(criteria.Exists(c => c.GetType() == criterium.GetType()), "Criterium missing");
}
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
index e789e8f1..008a6147 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
@@ -536,61 +536,62 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public override void CanUseIndexedEnumerator()
{
var matrix = TestMatrices["Singular3x3"];
- var enumerator = matrix.IndexedEnumerator().GetEnumerator();
-
- enumerator.MoveNext();
- var item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(Complex32.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(Complex32.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(Complex32.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(Complex32.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(Complex32.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(Complex32.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(Complex32.Zero, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(new Complex32(3.0f, 1.0f), item.Item3);
+ using (var enumerator = matrix.IndexedEnumerator().GetEnumerator())
+ {
+ enumerator.MoveNext();
+ var item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(Complex32.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(Complex32.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(Complex32.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(Complex32.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(Complex32.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(Complex32.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(Complex32.Zero, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(new Complex32(3.0f, 1.0f), item.Item3);
+ }
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs
index 59f831e8..58952d08 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs
@@ -1893,61 +1893,62 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
public virtual void CanUseIndexedEnumerator()
{
var matrix = TestMatrices["Singular3x3"];
- var enumerator = matrix.IndexedEnumerator().GetEnumerator();
-
- enumerator.MoveNext();
- var item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(new Complex32(2.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(new Complex32(2.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(new Complex32(2.0f, 1.0f), item.Item3);
+ using (var enumerator = matrix.IndexedEnumerator().GetEnumerator())
+ {
+ enumerator.MoveNext();
+ var item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(new Complex32(2.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(new Complex32(2.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(new Complex32(1.0f, 1.0f), item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(new Complex32(2.0f, 1.0f), item.Item3);
+ }
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs
index 72db8743..160c7f66 100644
--- a/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Complex32/Solvers/IteratorTest.cs
@@ -103,10 +103,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
// Check that we have all the criteria
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
- var enumerator = iterator.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in iterator.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => ReferenceEquals(c, criterium)), "Criterium missing");
}
}
@@ -158,10 +156,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
// Check that we have all the criteria
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
- var enumerator = iterator.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in iterator.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => ReferenceEquals(c, criterium)), "Criterium missing");
}
}
@@ -417,11 +413,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers
Assert.AreEqual(iterator.NumberOfCriteria, clone.NumberOfCriteria, "Incorrect criterium count");
// ReSharper restore PossibleNullReferenceException
- var enumerator = clone.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in clone.StoredStopCriteria)
{
- var criterium = enumerator.Current;
- Assert.IsTrue(criteria.Exists(c => c.GetType().Equals(criterium.GetType())), "Criterium missing");
+ Assert.IsTrue(criteria.Exists(c => c.GetType() == criterium.GetType()), "Criterium missing");
}
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs
index d14d2951..60431a41 100644
--- a/src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs
@@ -536,61 +536,62 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public override void CanUseIndexedEnumerator()
{
var matrix = TestMatrices["Singular3x3"];
- var enumerator = matrix.IndexedEnumerator().GetEnumerator();
-
- enumerator.MoveNext();
- var item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(1.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(0.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(0.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(0.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(0.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(0.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(0.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(0.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(3.0, item.Item3);
+ using (var enumerator = matrix.IndexedEnumerator().GetEnumerator())
+ {
+ enumerator.MoveNext();
+ var item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(1.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(0.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(0.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(0.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(0.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(0.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(0.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(0.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(3.0, item.Item3);
+ }
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Double/MatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Double/MatrixTests.cs
index f942a87c..45c04cd5 100644
--- a/src/UnitTests/LinearAlgebraTests/Double/MatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Double/MatrixTests.cs
@@ -1830,61 +1830,62 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
public virtual void CanUseIndexedEnumerator()
{
var matrix = TestMatrices["Singular3x3"];
- var enumerator = matrix.IndexedEnumerator().GetEnumerator();
-
- enumerator.MoveNext();
- var item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(1.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(1.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(2.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(1.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(1.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(2.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(1.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(1.0, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(2.0, item.Item3);
+ using (var enumerator = matrix.IndexedEnumerator().GetEnumerator())
+ {
+ enumerator.MoveNext();
+ var item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(1.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(1.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(2.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(1.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(1.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(2.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(1.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(1.0, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(2.0, item.Item3);
+ }
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs
index a6387579..8c068825 100644
--- a/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Double/Solvers/IteratorTest.cs
@@ -104,10 +104,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
// Check that we have all the criteria
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
- var enumerator = iterator.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in iterator.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => ReferenceEquals(c, criterium)), "Criterium missing");
}
}
@@ -159,10 +157,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
// Check that we have all the criteria
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
- var enumerator = iterator.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in iterator.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => ReferenceEquals(c, criterium)), "Criterium missing");
}
}
@@ -418,10 +414,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers
Assert.AreEqual(iterator.NumberOfCriteria, clone.NumberOfCriteria, "Incorrect criterium count");
// ReSharper restore PossibleNullReferenceException
- var enumerator = clone.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in clone.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => c.GetType().Equals(criterium.GetType())), "Criterium missing");
}
}
diff --git a/src/UnitTests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs
index 831a9fd0..207ef2e1 100644
--- a/src/UnitTests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs
@@ -535,61 +535,63 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
public override void CanUseIndexedEnumerator()
{
var matrix = TestMatrices["Singular3x3"];
- var enumerator = matrix.IndexedEnumerator().GetEnumerator();
-
- enumerator.MoveNext();
- var item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(1.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(0.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(0.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(0.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(0.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(0.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(0.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(0.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(3.0f, item.Item3);
+ using (var enumerator = matrix.IndexedEnumerator().GetEnumerator())
+ {
+ enumerator.MoveNext();
+ var item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(1.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(0.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(0.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(0.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(0.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(0.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(0.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(0.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(3.0f, item.Item3);
+ }
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Single/MatrixTests.cs b/src/UnitTests/LinearAlgebraTests/Single/MatrixTests.cs
index 6eb5e632..c7dd7b7a 100644
--- a/src/UnitTests/LinearAlgebraTests/Single/MatrixTests.cs
+++ b/src/UnitTests/LinearAlgebraTests/Single/MatrixTests.cs
@@ -1830,61 +1830,62 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
public virtual void CanUseIndexedEnumerator()
{
var matrix = TestMatrices["Singular3x3"];
- var enumerator = matrix.IndexedEnumerator().GetEnumerator();
-
- enumerator.MoveNext();
- var item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(1.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(1.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(0, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(2.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(1.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(1.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(1, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(2.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(0, item.Item2);
- Assert.AreEqual(1.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(1, item.Item2);
- Assert.AreEqual(1.0f, item.Item3);
-
- enumerator.MoveNext();
- item = enumerator.Current;
- Assert.AreEqual(2, item.Item1);
- Assert.AreEqual(2, item.Item2);
- Assert.AreEqual(2.0f, item.Item3);
+ using (var enumerator = matrix.IndexedEnumerator().GetEnumerator())
+ {
+ enumerator.MoveNext();
+ var item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(1.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(1.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(0, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(2.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(1.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(1.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(1, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(2.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(0, item.Item2);
+ Assert.AreEqual(1.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(1, item.Item2);
+ Assert.AreEqual(1.0f, item.Item3);
+
+ enumerator.MoveNext();
+ item = enumerator.Current;
+ Assert.AreEqual(2, item.Item1);
+ Assert.AreEqual(2, item.Item2);
+ Assert.AreEqual(2.0f, item.Item3);
+ }
}
///
diff --git a/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs b/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs
index e425e839..dfbef20a 100644
--- a/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs
+++ b/src/UnitTests/LinearAlgebraTests/Single/Solvers/IteratorTest.cs
@@ -103,10 +103,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
// Check that we have all the criteria
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
- var enumerator = iterator.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in iterator.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => ReferenceEquals(c, criterium)), "Criterium missing");
}
}
@@ -158,10 +156,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
// Check that we have all the criteria
Assert.AreEqual(criteria.Count, iterator.NumberOfCriteria, "Incorrect criterium count");
- var enumerator = iterator.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in iterator.StoredStopCriteria)
{
- var criterium = enumerator.Current;
Assert.IsTrue(criteria.Exists(c => ReferenceEquals(c, criterium)), "Criterium missing");
}
}
@@ -417,11 +413,9 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers
Assert.AreEqual(iterator.NumberOfCriteria, clone.NumberOfCriteria, "Incorrect criterium count");
// ReSharper restore PossibleNullReferenceException
- var enumerator = clone.StoredStopCriteria;
- while (enumerator.MoveNext())
+ foreach (var criterium in clone.StoredStopCriteria)
{
- var criterium = enumerator.Current;
- Assert.IsTrue(criteria.Exists(c => c.GetType().Equals(criterium.GetType())), "Criterium missing");
+ Assert.IsTrue(criteria.Exists(c => c.GetType() == criterium.GetType()), "Criterium missing");
}
}
}