From 5cf6948064aad6f9b94191590020e0386ff45034 Mon Sep 17 00:00:00 2001 From: Evangelink Date: Mon, 29 Jun 2020 17:24:50 +0200 Subject: [PATCH 1/2] Allow empty Vector and Matrix --- .../LinearAlgebraTests/Complex/VectorTests.cs | 3 +- .../Complex32/VectorTests.cs | 3 +- .../LinearAlgebraTests/Double/VectorTests.cs | 3 +- .../LinearAlgebraTests/MatrixTests.cs | 77 +++++++++++++ .../LinearAlgebraTests/Single/VectorTests.cs | 3 +- .../LinearAlgebraTests/VectorTests.cs | 107 ++++++++++++++++++ .../Storage/DenseVectorStorage.cs | 8 +- .../LinearAlgebra/Storage/MatrixStorage.cs | 4 +- .../Storage/SparseVectorStorage.cs | 8 +- .../LinearAlgebra/Storage/VectorStorage.cs | 4 +- 10 files changed, 200 insertions(+), 20 deletions(-) create mode 100644 src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs create mode 100644 src/Numerics.Tests/LinearAlgebraTests/VectorTests.cs diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex/VectorTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex/VectorTests.cs index 95afe05f..7e96be32 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex/VectorTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex/VectorTests.cs @@ -63,7 +63,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex Assert.AreEqual(vector.Count, clone.Count); CollectionAssert.AreEqual(vector, clone); } - + /// /// Can clone a vector using IClonable interface method. /// @@ -198,7 +198,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex public void SizeIsNotPositiveThrowsArgumentOutOfRangeException() { Assert.That(() => CreateVector(-1), Throws.TypeOf()); - Assert.That(() => CreateVector(0), Throws.TypeOf()); } /// diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex32/VectorTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex32/VectorTests.cs index f1ae88cc..a597f8e1 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex32/VectorTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex32/VectorTests.cs @@ -63,7 +63,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 Assert.AreEqual(vector.Count, clone.Count); CollectionAssert.AreEqual(vector, clone); } - + /// /// Can clone a vector using IClonable interface method. /// @@ -198,7 +198,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 public void SizeIsNotPositiveThrowsArgumentOutOfRangeException() { Assert.That(() => CreateVector(-1), Throws.TypeOf()); - Assert.That(() => CreateVector(0), Throws.TypeOf()); } /// diff --git a/src/Numerics.Tests/LinearAlgebraTests/Double/VectorTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Double/VectorTests.cs index 453fd6af..9293900a 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Double/VectorTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Double/VectorTests.cs @@ -59,7 +59,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double Assert.AreEqual(vector.Count, clone.Count); CollectionAssert.AreEqual(vector, clone); } - + /// /// Can clone a vector using IClonable interface method. /// @@ -194,7 +194,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double public void SizeIsNotPositiveThrowsArgumentOutOfRangeException() { Assert.That(() => CreateVector(-1), Throws.TypeOf()); - Assert.That(() => CreateVector(0), Throws.TypeOf()); } /// diff --git a/src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs new file mode 100644 index 00000000..cc39f378 --- /dev/null +++ b/src/Numerics.Tests/LinearAlgebraTests/MatrixTests.cs @@ -0,0 +1,77 @@ +// +// Math.NET Numerics, part of the Math.NET Project +// http://numerics.mathdotnet.com +// http://github.com/mathnet/mathnet-numerics +// +// Copyright (c) 2009-2016 Math.NET +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using MathNet.Numerics.LinearAlgebra; +using MathNet.Numerics.LinearAlgebra.Storage; +using NUnit.Framework; + +namespace MathNet.Numerics.UnitTests.LinearAlgebraTests +{ + [TestFixture, Category("LA")] + public class MatrixTests + { + [Test] + public void DenseMatrixBuilderMethos_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => Matrix.Build.Dense(0, 0)); + Assert.DoesNotThrow(() => Matrix.Build.Dense(0, 0, 42)); + Assert.DoesNotThrow(() => Matrix.Build.Dense(0, 0, Array.Empty())); + Assert.DoesNotThrow(() => Matrix.Build.Dense(0, 0, (row, column) => 42)); + } + + [Test] + public void SparseMatrixBuilderMethos_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => Matrix.Build.Sparse(0, 0)); + Assert.DoesNotThrow(() => Matrix.Build.Sparse(0, 0, 42)); + Assert.DoesNotThrow(() => Matrix.Build.Sparse(0, 0, (row, column) => 42)); + } + + [Test] + public void DenseColumnMajorMatrixStorageBuilderMethods_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => new DenseColumnMajorMatrixStorage(0, 0)); + Assert.DoesNotThrow(() => new DenseColumnMajorMatrixStorage(0, 0, Array.Empty())); + } + + [Test] + public void DiagonalMatrixStorageBuilderMethods_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => new DiagonalMatrixStorage(0, 0)); + Assert.DoesNotThrow(() => new DiagonalMatrixStorage(0, 0, Array.Empty())); + } + + [Test] + public void SparseCompressedRowMatrixStorageBuilderMethods_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => new SparseCompressedRowMatrixStorage(0, 0)); + } + } +} diff --git a/src/Numerics.Tests/LinearAlgebraTests/Single/VectorTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Single/VectorTests.cs index 0fa2f00f..5bce8083 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Single/VectorTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Single/VectorTests.cs @@ -60,7 +60,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single Assert.AreEqual(vector.Count, clone.Count); CollectionAssert.AreEqual(vector, clone); } - + /// /// Can clone a vector using IClonable interface method. /// @@ -195,7 +195,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single public void SizeIsNotPositiveThrowsArgumentOutOfRangeException() { Assert.That(() => CreateVector(-1), Throws.TypeOf()); - Assert.That(() => CreateVector(0), Throws.TypeOf()); } /// diff --git a/src/Numerics.Tests/LinearAlgebraTests/VectorTests.cs b/src/Numerics.Tests/LinearAlgebraTests/VectorTests.cs new file mode 100644 index 00000000..3a255000 --- /dev/null +++ b/src/Numerics.Tests/LinearAlgebraTests/VectorTests.cs @@ -0,0 +1,107 @@ +// +// Math.NET Numerics, part of the Math.NET Project +// http://numerics.mathdotnet.com +// http://github.com/mathnet/mathnet-numerics +// +// Copyright (c) 2009-2016 Math.NET +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the "Software"), to deal in the Software without +// restriction, including without limitation the rights to use, +// copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following +// conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using MathNet.Numerics.LinearAlgebra; +using MathNet.Numerics.LinearAlgebra.Storage; +using MathNet.Numerics.Properties; +using NUnit.Framework; + +namespace MathNet.Numerics.UnitTests.LinearAlgebraTests +{ + [TestFixture, Category("LA")] + public class VectorTests + { + [Test] + public void DenseVectorBuilderMethod_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => Vector.Build.Dense(0)); + Assert.DoesNotThrow(() => Vector.Build.Dense(0, 42)); + Assert.DoesNotThrow(() => Vector.Build.Dense(0, index => 42)); + Assert.DoesNotThrow(() => Vector.Build.Dense(Array.Empty())); + } + + [Test] + public void SparseVectorBuilderMethods_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => Vector.Build.Sparse(0)); + Assert.DoesNotThrow(() => Vector.Build.Sparse(0, 42)); + Assert.DoesNotThrow(() => Vector.Build.Sparse(0, index => 42)); + } + + [Test] + public void DenseVectorStorageBuilderMethods_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => new DenseVectorStorage(0)); + Assert.DoesNotThrow(() => new DenseVectorStorage(0, Array.Empty())); + Assert.DoesNotThrow(() => DenseVectorStorage.OfValue(0, 42)); + Assert.DoesNotThrow(() => DenseVectorStorage.OfInit(0, index => 42)); + } + + [Test] + public void SparseVectorStorageBuilderMethods_ZeroLength_DoNotThrowException() + { + Assert.DoesNotThrow(() => new SparseVectorStorage(0)); + Assert.DoesNotThrow(() => SparseVectorStorage.OfValue(0, 42)); + Assert.DoesNotThrow(() => SparseVectorStorage.OfInit(0, index => 42)); + } + + [Test] + public void DenseVectorStorageOfInit_NegativeLength_ThrowsArgumentException() + { + Assert.That(() => DenseVectorStorage.OfInit(-1, index => 42), + Throws.TypeOf() + .With.Message.Contains(Resources.ArgumentNotNegative)); + } + + [Test] + public void DenseVectorStorageOfValue_NegativeLength_ThrowsArgumentException() + { + Assert.That(() => DenseVectorStorage.OfValue(-1, 42), + Throws.TypeOf() + .With.Message.Contains(Resources.ArgumentNotNegative)); + } + + [Test] + public void SparseVectorStorageOfInit_NegativeLength_ThrowsArgumentException() + { + Assert.That(() => SparseVectorStorage.OfInit(-1, index => 42), + Throws.TypeOf() + .With.Message.Contains(Resources.ArgumentNotNegative)); + } + + [Test] + public void SparseVectorStorageOfValue_NegativeLength_ThrowsArgumentException() + { + Assert.That(() => SparseVectorStorage.OfValue(-1, 42), + Throws.TypeOf() + .With.Message.Contains(Resources.ArgumentNotNegative)); + } + } +} diff --git a/src/Numerics/LinearAlgebra/Storage/DenseVectorStorage.cs b/src/Numerics/LinearAlgebra/Storage/DenseVectorStorage.cs index 9a3a9df9..100639fe 100644 --- a/src/Numerics/LinearAlgebra/Storage/DenseVectorStorage.cs +++ b/src/Numerics/LinearAlgebra/Storage/DenseVectorStorage.cs @@ -115,9 +115,9 @@ namespace MathNet.Numerics.LinearAlgebra.Storage public static DenseVectorStorage OfValue(int length, T value) { - if (length < 1) + if (length < 0) { - throw new ArgumentOutOfRangeException(nameof(length), string.Format(Resources.ArgumentLessThanOne, length)); + throw new ArgumentOutOfRangeException(nameof(length), Resources.ArgumentNotNegative); } var data = new T[length]; @@ -133,9 +133,9 @@ namespace MathNet.Numerics.LinearAlgebra.Storage public static DenseVectorStorage OfInit(int length, Func init) { - if (length < 1) + if (length < 0) { - throw new ArgumentOutOfRangeException(nameof(length), string.Format(Resources.ArgumentLessThanOne, length)); + throw new ArgumentOutOfRangeException(nameof(length), Resources.ArgumentNotNegative); } var data = new T[length]; diff --git a/src/Numerics/LinearAlgebra/Storage/MatrixStorage.cs b/src/Numerics/LinearAlgebra/Storage/MatrixStorage.cs index 9459747d..7f9618c5 100644 --- a/src/Numerics/LinearAlgebra/Storage/MatrixStorage.cs +++ b/src/Numerics/LinearAlgebra/Storage/MatrixStorage.cs @@ -51,12 +51,12 @@ namespace MathNet.Numerics.LinearAlgebra.Storage protected MatrixStorage(int rowCount, int columnCount) { - if (rowCount <= 0) + if (rowCount < 0) { throw new ArgumentOutOfRangeException(nameof(rowCount), Resources.MatrixRowsMustBePositive); } - if (columnCount <= 0) + if (columnCount < 0) { throw new ArgumentOutOfRangeException(nameof(columnCount), Resources.MatrixColumnsMustBePositive); } diff --git a/src/Numerics/LinearAlgebra/Storage/SparseVectorStorage.cs b/src/Numerics/LinearAlgebra/Storage/SparseVectorStorage.cs index bd8da317..0cf7d9b4 100644 --- a/src/Numerics/LinearAlgebra/Storage/SparseVectorStorage.cs +++ b/src/Numerics/LinearAlgebra/Storage/SparseVectorStorage.cs @@ -315,9 +315,9 @@ namespace MathNet.Numerics.LinearAlgebra.Storage return new SparseVectorStorage(length); } - if (length < 1) + if (length < 0) { - throw new ArgumentOutOfRangeException(nameof(length), string.Format(Resources.ArgumentLessThanOne, length)); + throw new ArgumentOutOfRangeException(nameof(length), Resources.ArgumentNotNegative); } var indices = new int[length]; @@ -338,9 +338,9 @@ namespace MathNet.Numerics.LinearAlgebra.Storage public static SparseVectorStorage OfInit(int length, Func init) { - if (length < 1) + if (length < 0) { - throw new ArgumentOutOfRangeException(nameof(length), string.Format(Resources.ArgumentLessThanOne, length)); + throw new ArgumentOutOfRangeException(nameof(length), Resources.ArgumentNotNegative); } var indices = new List(); diff --git a/src/Numerics/LinearAlgebra/Storage/VectorStorage.cs b/src/Numerics/LinearAlgebra/Storage/VectorStorage.cs index f38337fb..8fe8af83 100644 --- a/src/Numerics/LinearAlgebra/Storage/VectorStorage.cs +++ b/src/Numerics/LinearAlgebra/Storage/VectorStorage.cs @@ -48,9 +48,9 @@ namespace MathNet.Numerics.LinearAlgebra.Storage protected VectorStorage(int length) { - if (length <= 0) + if (length < 0) { - throw new ArgumentOutOfRangeException(nameof(length), Resources.ArgumentMustBePositive); + throw new ArgumentOutOfRangeException(nameof(length), Resources.ArgumentNotNegative); } Length = length; From 531e684c7c14d3677a28458be690791b1fbda9a8 Mon Sep 17 00:00:00 2001 From: Evangelink Date: Thu, 2 Jul 2020 11:59:41 +0200 Subject: [PATCH 2/2] Fix remaining broken tests --- .../LinearAlgebraTests/Complex/DenseMatrixTests.cs | 2 +- .../LinearAlgebraTests/Complex/DiagonalMatrixTests.cs | 2 +- .../LinearAlgebraTests/Complex/MatrixTests.Arithmetic.cs | 2 +- .../LinearAlgebraTests/Complex/SparseMatrixTests.cs | 2 +- .../LinearAlgebraTests/Complex32/DenseMatrixTests.cs | 2 +- .../LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs | 2 +- .../LinearAlgebraTests/Complex32/MatrixTests.Arithmetic.cs | 2 +- .../LinearAlgebraTests/Complex32/SparseMatrixTests.cs | 2 +- .../LinearAlgebraTests/Double/DenseMatrixTests.cs | 2 +- .../LinearAlgebraTests/Double/DiagonalMatrixTests.cs | 2 +- .../LinearAlgebraTests/Double/MatrixTests.Arithmetic.cs | 2 +- .../LinearAlgebraTests/Double/SparseMatrixTests.cs | 2 +- .../LinearAlgebraTests/MatrixStructureTheory.Access.cs | 4 ---- .../LinearAlgebraTests/MatrixStructureTheory.cs | 6 +++--- .../LinearAlgebraTests/Single/DenseMatrixTests.cs | 2 +- .../LinearAlgebraTests/Single/DiagonalMatrixTests.cs | 2 +- .../LinearAlgebraTests/Single/MatrixTests.Arithmetic.cs | 2 +- .../LinearAlgebraTests/Single/SparseMatrixTests.cs | 2 +- 18 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex/DenseMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex/DenseMatrixTests.cs index 6cd708f5..4509a88f 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex/DenseMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex/DenseMatrixTests.cs @@ -166,8 +166,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => DenseMatrix.CreateIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs index bb20c59a..6503cf53 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs @@ -177,8 +177,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => DiagonalMatrix.CreateIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex/MatrixTests.Arithmetic.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex/MatrixTests.Arithmetic.cs index e850d029..8f383a53 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex/MatrixTests.Arithmetic.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex/MatrixTests.Arithmetic.cs @@ -1047,7 +1047,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex /// Create random matrix with non-positive number of rows throw ArgumentException. /// /// Number of rows. - [TestCase(0)] + [TestCase(-1)] [TestCase(-2)] public void RandomWithNonPositiveNumberOfRowsThrowsArgumentException(int numberOfRows) { diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex/SparseMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex/SparseMatrixTests.cs index 8e9a1841..e6ac8431 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex/SparseMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex/SparseMatrixTests.cs @@ -151,8 +151,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => SparseMatrix.CreateIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex32/DenseMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex32/DenseMatrixTests.cs index b2e725f4..1e1c7ebd 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex32/DenseMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex32/DenseMatrixTests.cs @@ -166,8 +166,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => DenseMatrix.CreateIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs index 2f586bdb..558ba62f 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs @@ -177,8 +177,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => DiagonalMatrix.CreateIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex32/MatrixTests.Arithmetic.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex32/MatrixTests.Arithmetic.cs index 91898dbb..e5140d56 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex32/MatrixTests.Arithmetic.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex32/MatrixTests.Arithmetic.cs @@ -1044,7 +1044,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 /// Create random matrix with non-positive number of rows throw ArgumentException. /// /// Number of rows. - [TestCase(0)] + [TestCase(-1)] [TestCase(-2)] public void RandomWithNonPositiveNumberOfRowsThrowsArgumentException(int numberOfRows) { diff --git a/src/Numerics.Tests/LinearAlgebraTests/Complex32/SparseMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Complex32/SparseMatrixTests.cs index 06042c6c..417c934b 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Complex32/SparseMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Complex32/SparseMatrixTests.cs @@ -151,8 +151,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32 /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => SparseMatrix.CreateIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Double/DenseMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Double/DenseMatrixTests.cs index 86f10409..99be1554 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Double/DenseMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Double/DenseMatrixTests.cs @@ -167,8 +167,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => Matrix.Build.DenseIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs index 3009e6a4..e117de07 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs @@ -176,8 +176,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => Matrix.Build.DiagonalIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Double/MatrixTests.Arithmetic.cs b/src/Numerics.Tests/LinearAlgebraTests/Double/MatrixTests.Arithmetic.cs index 44ba8807..2afb353c 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Double/MatrixTests.Arithmetic.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Double/MatrixTests.Arithmetic.cs @@ -1037,7 +1037,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double /// Create random matrix with non-positive number of rows throw ArgumentException. /// /// Number of rows. - [TestCase(0)] + [TestCase(-1)] [TestCase(-2)] public void RandomWithNonPositiveNumberOfRowsThrowsArgumentException(int numberOfRows) { diff --git a/src/Numerics.Tests/LinearAlgebraTests/Double/SparseMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Double/SparseMatrixTests.cs index 8ed665f5..66b40dcb 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Double/SparseMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Double/SparseMatrixTests.cs @@ -150,8 +150,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => Matrix.Build.SparseIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/MatrixStructureTheory.Access.cs b/src/Numerics.Tests/LinearAlgebraTests/MatrixStructureTheory.Access.cs index 6217e408..03697768 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/MatrixStructureTheory.Access.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/MatrixStructureTheory.Access.cs @@ -126,7 +126,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests Assert.That(() => matrix.Row(-1, 0, 2), Throws.InstanceOf()); Assert.That(() => matrix.Row(matrix.RowCount, 0, 1), Throws.InstanceOf()); Assert.That(() => matrix.Row(0, -1, 1), Throws.InstanceOf()); - Assert.That(() => matrix.Row(0, 1, 0), Throws.InstanceOf()); Assert.That(() => matrix.Row(0, 0, matrix.ColumnCount + 1), Throws.InstanceOf()); } @@ -226,7 +225,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests Assert.That(() => matrix.Column(-1, 0, 2), Throws.InstanceOf()); Assert.That(() => matrix.Column(matrix.ColumnCount, 0, 1), Throws.InstanceOf()); Assert.That(() => matrix.Column(0, -1, 1), Throws.InstanceOf()); - Assert.That(() => matrix.Column(0, 1, 0), Throws.InstanceOf()); Assert.That(() => matrix.Column(0, 0, matrix.RowCount + 1), Throws.InstanceOf()); } @@ -667,10 +665,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests // Invalid Assert.That(() => matrix.SubMatrix(-1, 1, 0, 1), Throws.InstanceOf()); Assert.That(() => matrix.SubMatrix(matrix.RowCount, 1, 0, 1), Throws.InstanceOf()); - Assert.That(() => matrix.SubMatrix(0, 0, 0, 1), Throws.InstanceOf()); Assert.That(() => matrix.SubMatrix(0, 1, -1, 1), Throws.InstanceOf()); Assert.That(() => matrix.SubMatrix(0, 1, matrix.ColumnCount, 1), Throws.InstanceOf()); - Assert.That(() => matrix.SubMatrix(0, 1, 0, 0), Throws.InstanceOf()); } [Theory] diff --git a/src/Numerics.Tests/LinearAlgebraTests/MatrixStructureTheory.cs b/src/Numerics.Tests/LinearAlgebraTests/MatrixStructureTheory.cs index ac922178..2cc08b2f 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/MatrixStructureTheory.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/MatrixStructureTheory.cs @@ -141,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests Assert.That(clone.RowCount, Is.EqualTo(matrix.RowCount)); Assert.That(clone.ColumnCount, Is.EqualTo(matrix.ColumnCount)); } - + [Theory] public void CanCloneUsingICloneable(TestMatrix testMatrix) { @@ -415,8 +415,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests Assert.That(empty, Is.EqualTo(Matrix.Build.Dense(5, 6))); Assert.That(empty.Storage.IsDense, Is.EqualTo(matrix.Storage.IsDense)); - Assert.That(() => Matrix.Build.SameAs(matrix, 0, 2), Throws.InstanceOf()); - Assert.That(() => Matrix.Build.SameAs(matrix, 2, 0), Throws.InstanceOf()); + Assert.That(() => Matrix.Build.SameAs(matrix, -1, 2), Throws.InstanceOf()); + Assert.That(() => Matrix.Build.SameAs(matrix, 2, -1), Throws.InstanceOf()); Assert.That(() => Matrix.Build.SameAs(matrix, -1, -1), Throws.InstanceOf()); } diff --git a/src/Numerics.Tests/LinearAlgebraTests/Single/DenseMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Single/DenseMatrixTests.cs index ea3e3cf0..6944e4cc 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Single/DenseMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Single/DenseMatrixTests.cs @@ -164,8 +164,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => DenseMatrix.CreateIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs index 3c501228..dad11cc9 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs @@ -174,8 +174,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => DiagonalMatrix.CreateIdentity(order), Throws.TypeOf()); diff --git a/src/Numerics.Tests/LinearAlgebraTests/Single/MatrixTests.Arithmetic.cs b/src/Numerics.Tests/LinearAlgebraTests/Single/MatrixTests.Arithmetic.cs index 24c4be4c..2b48e783 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Single/MatrixTests.Arithmetic.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Single/MatrixTests.Arithmetic.cs @@ -1032,7 +1032,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single /// Create random matrix with non-positive number of rows throw ArgumentException. /// /// Number of rows. - [TestCase(0)] + [TestCase(-1)] [TestCase(-2)] public void RandomWithNonPositiveNumberOfRowsThrowsArgumentException(int numberOfRows) { diff --git a/src/Numerics.Tests/LinearAlgebraTests/Single/SparseMatrixTests.cs b/src/Numerics.Tests/LinearAlgebraTests/Single/SparseMatrixTests.cs index fede82c7..53c7f93c 100644 --- a/src/Numerics.Tests/LinearAlgebraTests/Single/SparseMatrixTests.cs +++ b/src/Numerics.Tests/LinearAlgebraTests/Single/SparseMatrixTests.cs @@ -149,8 +149,8 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single /// Identity with wrong order throws ArgumentOutOfRangeException. /// /// The size of the square matrix - [TestCase(0)] [TestCase(-1)] + [TestCase(-2)] public void IdentityWithWrongOrderThrowsArgumentOutOfRangeException(int order) { Assert.That(() => SparseMatrix.CreateIdentity(order), Throws.TypeOf());