Browse Source

Tests: replace matrix structural tests with theory (part 6) - Permutation

pull/47/head
Christoph Ruegg 14 years ago
parent
commit
6eb4f827e6
  1. 16
      src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs
  2. 54
      src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs
  3. 16
      src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs
  4. 54
      src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs
  5. 16
      src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs
  6. 54
      src/UnitTests/LinearAlgebraTests/Double/MatrixTests.cs
  7. 59
      src/UnitTests/LinearAlgebraTests/MatrixStructureTheory.Reform.cs
  8. 16
      src/UnitTests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs
  9. 54
      src/UnitTests/LinearAlgebraTests/Single/MatrixTests.cs

16
src/UnitTests/LinearAlgebraTests/Complex/DiagonalMatrixTests.cs

@ -280,22 +280,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
Assert.Throws<InvalidOperationException>(() => matrixp.PermuteColumns(permutation));
}
/// <summary>
/// Can permute matrix rows.
/// </summary>
/// <param name="name">Matrix name.</param>
public override void CanPermuteMatrixRows(string name)
{
}
/// <summary>
/// Can permute matrix columns.
/// </summary>
/// <param name="name">Matrix name.</param>
public override void CanPermuteMatrixColumns(string name)
{
}
/// <summary>
/// Can pointwise divide matrices into a result matrix.
/// </summary>

54
src/UnitTests/LinearAlgebraTests/Complex/MatrixTests.cs

@ -152,60 +152,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex
}
}
/// <summary>
/// Can permute matrix rows.
/// </summary>
/// <param name="name">Matrix name.</param>
[TestCase("Singular3x3")]
[TestCase("Square3x3")]
[TestCase("Tall3x2")]
public virtual void CanPermuteMatrixRows(string name)
{
var matrix = CreateMatrix(TestData2D[name]);
var matrixp = CreateMatrix(TestData2D[name]);
var permutation = new Permutation(new[] { 2, 0, 1 });
matrixp.PermuteRows(permutation);
Assert.AreNotSame(matrix, matrixp);
Assert.AreEqual(matrix.RowCount, matrixp.RowCount);
Assert.AreEqual(matrix.ColumnCount, matrixp.ColumnCount);
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.AreEqual(matrix[i, j], matrixp[permutation[i], j]);
}
}
}
/// <summary>
/// Can permute matrix columns.
/// </summary>
/// <param name="name">Matrix name.</param>
[TestCase("Singular3x3")]
[TestCase("Square3x3")]
[TestCase("Wide2x3")]
public virtual void CanPermuteMatrixColumns(string name)
{
var matrix = CreateMatrix(TestData2D[name]);
var matrixp = CreateMatrix(TestData2D[name]);
var permutation = new Permutation(new[] { 2, 0, 1 });
matrixp.PermuteColumns(permutation);
Assert.AreNotSame(matrix, matrixp);
Assert.AreEqual(matrix.RowCount, matrixp.RowCount);
Assert.AreEqual(matrix.ColumnCount, matrixp.ColumnCount);
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.AreEqual(matrix[i, j], matrixp[i, permutation[j]]);
}
}
}
/// <summary>
/// Can append matrices.
/// </summary>

16
src/UnitTests/LinearAlgebraTests/Complex32/DiagonalMatrixTests.cs

@ -280,22 +280,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
Assert.Throws<InvalidOperationException>(() => matrixp.PermuteColumns(permutation));
}
/// <summary>
/// Can permute matrix rows.
/// </summary>
/// <param name="name">Matrix name.</param>
public override void CanPermuteMatrixRows(string name)
{
}
/// <summary>
/// Can permute matrix columns.
/// </summary>
/// <param name="name">Matrix name.</param>
public override void CanPermuteMatrixColumns(string name)
{
}
/// <summary>
/// Can pointwise divide matrices into a result matrix.
/// </summary>

54
src/UnitTests/LinearAlgebraTests/Complex32/MatrixTests.cs

@ -152,60 +152,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32
}
}
/// <summary>
/// Can permute matrix rows.
/// </summary>
/// <param name="name">Matrix name.</param>
[TestCase("Singular3x3")]
[TestCase("Square3x3")]
[TestCase("Tall3x2")]
public virtual void CanPermuteMatrixRows(string name)
{
var matrix = CreateMatrix(TestData2D[name]);
var matrixp = CreateMatrix(TestData2D[name]);
var permutation = new Permutation(new[] { 2, 0, 1 });
matrixp.PermuteRows(permutation);
Assert.AreNotSame(matrix, matrixp);
Assert.AreEqual(matrix.RowCount, matrixp.RowCount);
Assert.AreEqual(matrix.ColumnCount, matrixp.ColumnCount);
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.AreEqual(matrix[i, j], matrixp[permutation[i], j]);
}
}
}
/// <summary>
/// Can permute matrix columns.
/// </summary>
/// <param name="name">Matrix name.</param>
[TestCase("Singular3x3")]
[TestCase("Square3x3")]
[TestCase("Wide2x3")]
public virtual void CanPermuteMatrixColumns(string name)
{
var matrix = CreateMatrix(TestData2D[name]);
var matrixp = CreateMatrix(TestData2D[name]);
var permutation = new Permutation(new[] { 2, 0, 1 });
matrixp.PermuteColumns(permutation);
Assert.AreNotSame(matrix, matrixp);
Assert.AreEqual(matrix.RowCount, matrixp.RowCount);
Assert.AreEqual(matrix.ColumnCount, matrixp.ColumnCount);
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.AreEqual(matrix[i, j], matrixp[i, permutation[j]]);
}
}
}
/// <summary>
/// Can append matrices.
/// </summary>

16
src/UnitTests/LinearAlgebraTests/Double/DiagonalMatrixTests.cs

@ -280,22 +280,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
Assert.Throws<InvalidOperationException>(() => matrixp.PermuteColumns(permutation));
}
/// <summary>
/// Can permute matrix rows.
/// </summary>
/// <param name="name">Matrix name.</param>
public override void CanPermuteMatrixRows(string name)
{
}
/// <summary>
/// Can permute matrix columns.
/// </summary>
/// <param name="name">Matrix name.</param>
public override void CanPermuteMatrixColumns(string name)
{
}
/// <summary>
/// Can pointwise divide matrices into a result matrix.
/// </summary>

54
src/UnitTests/LinearAlgebraTests/Double/MatrixTests.cs

@ -125,60 +125,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double
}
}
/// <summary>
/// Can permute matrix rows.
/// </summary>
/// <param name="name">Matrix name.</param>
[TestCase("Singular3x3")]
[TestCase("Square3x3")]
[TestCase("Tall3x2")]
public virtual void CanPermuteMatrixRows(string name)
{
var matrix = CreateMatrix(TestData2D[name]);
var matrixp = CreateMatrix(TestData2D[name]);
var permutation = new Permutation(new[] { 2, 0, 1 });
matrixp.PermuteRows(permutation);
Assert.AreNotSame(matrix, matrixp);
Assert.AreEqual(matrix.RowCount, matrixp.RowCount);
Assert.AreEqual(matrix.ColumnCount, matrixp.ColumnCount);
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.AreEqual(matrix[i, j], matrixp[permutation[i], j]);
}
}
}
/// <summary>
/// Can permute matrix columns.
/// </summary>
/// <param name="name">Matrix name.</param>
[TestCase("Singular3x3")]
[TestCase("Square3x3")]
[TestCase("Wide2x3")]
public virtual void CanPermuteMatrixColumns(string name)
{
var matrix = CreateMatrix(TestData2D[name]);
var matrixp = CreateMatrix(TestData2D[name]);
var permutation = new Permutation(new[] { 2, 0, 1 });
matrixp.PermuteColumns(permutation);
Assert.AreNotSame(matrix, matrixp);
Assert.AreEqual(matrix.RowCount, matrixp.RowCount);
Assert.AreEqual(matrix.ColumnCount, matrixp.ColumnCount);
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.AreEqual(matrix[i, j], matrixp[i, permutation[j]]);
}
}
}
/// <summary>
/// Can append matrices.
/// </summary>

59
src/UnitTests/LinearAlgebraTests/MatrixStructureTheory.Reform.cs

@ -1,4 +1,5 @@
using System;
using System.Linq;
using MathNet.Numerics.LinearAlgebra.Generic;
using NUnit.Framework;
@ -6,6 +7,64 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests
{
partial class MatrixStructureTheory<T>
{
[Theory, Timeout(200)]
public void CanPermuteRows(Matrix<T> matrix)
{
var m = matrix.Clone();
var rnd = new System.Random(0);
var permutation = new Permutation(Enumerable.Range(0, matrix.RowCount).OrderBy(i => rnd.Next()).ToArray());
try
{
m.PermuteRows(permutation);
}
catch(InvalidOperationException)
{
Assert.Ignore("Matrix type {0} does not support permutations", matrix.GetType().FullName);
}
Assert.That(m, Is.Not.SameAs(matrix));
Assert.That(m.RowCount, Is.EqualTo(matrix.RowCount));
Assert.That(m.ColumnCount, Is.EqualTo(matrix.ColumnCount));
var inverse = permutation.Inverse();
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.That(m[i, j], Is.EqualTo(matrix[inverse[i], j]));
}
}
}
[Theory, Timeout(200)]
public void CanPermuteColumns(Matrix<T> matrix)
{
var m = matrix.Clone();
var rnd = new System.Random(0);
var permutation = new Permutation(Enumerable.Range(0, matrix.ColumnCount).OrderBy(i => rnd.Next()).ToArray());
try
{
m.PermuteColumns(permutation);
}
catch (InvalidOperationException)
{
Assert.Ignore("Matrix type {0} does not support permutations", matrix.GetType().FullName);
}
Assert.That(m, Is.Not.SameAs(matrix));
Assert.That(m.RowCount, Is.EqualTo(matrix.RowCount));
Assert.That(m.ColumnCount, Is.EqualTo(matrix.ColumnCount));
var inverse = permutation.Inverse();
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.That(m[i, j], Is.EqualTo(matrix[i, inverse[j]]));
}
}
}
[Theory, Timeout(200)]
public void CanInsertRow(Matrix<T> matrix)
{

16
src/UnitTests/LinearAlgebraTests/Single/DiagonalMatrixTests.cs

@ -279,22 +279,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
Assert.Throws<InvalidOperationException>(() => matrixp.PermuteColumns(permutation));
}
/// <summary>
/// Can permute matrix rows.
/// </summary>
/// <param name="name">Matrix name.</param>
public override void CanPermuteMatrixRows(string name)
{
}
/// <summary>
/// Can permute matrix columns.
/// </summary>
/// <param name="name">Matrix name.</param>
public override void CanPermuteMatrixColumns(string name)
{
}
/// <summary>
/// Can pointwise divide matrices into a result matrix.
/// </summary>

54
src/UnitTests/LinearAlgebraTests/Single/MatrixTests.cs

@ -125,60 +125,6 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single
}
}
/// <summary>
/// Can permute matrix rows.
/// </summary>
/// <param name="name">Matrix name.</param>
[TestCase("Singular3x3")]
[TestCase("Square3x3")]
[TestCase("Tall3x2")]
public virtual void CanPermuteMatrixRows(string name)
{
var matrix = CreateMatrix(TestData2D[name]);
var matrixp = CreateMatrix(TestData2D[name]);
var permutation = new Permutation(new[] { 2, 0, 1 });
matrixp.PermuteRows(permutation);
Assert.AreNotSame(matrix, matrixp);
Assert.AreEqual(matrix.RowCount, matrixp.RowCount);
Assert.AreEqual(matrix.ColumnCount, matrixp.ColumnCount);
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.AreEqual(matrix[i, j], matrixp[permutation[i], j]);
}
}
}
/// <summary>
/// Can permute matrix columns.
/// </summary>
/// <param name="name">Matrix name.</param>
[TestCase("Singular3x3")]
[TestCase("Square3x3")]
[TestCase("Wide2x3")]
public virtual void CanPermuteMatrixColumns(string name)
{
var matrix = CreateMatrix(TestData2D[name]);
var matrixp = CreateMatrix(TestData2D[name]);
var permutation = new Permutation(new[] { 2, 0, 1 });
matrixp.PermuteColumns(permutation);
Assert.AreNotSame(matrix, matrixp);
Assert.AreEqual(matrix.RowCount, matrixp.RowCount);
Assert.AreEqual(matrix.ColumnCount, matrixp.ColumnCount);
for (var i = 0; i < matrix.RowCount; i++)
{
for (var j = 0; j < matrix.ColumnCount; j++)
{
Assert.AreEqual(matrix[i, j], matrixp[i, permutation[j]]);
}
}
}
/// <summary>
/// Can append matrices.
/// </summary>

Loading…
Cancel
Save