10 changed files with 290 additions and 1 deletions
@ -0,0 +1,141 @@ |
|||
using System; |
|||
using System.IO; |
|||
using System.Runtime.Serialization; |
|||
using MathNet.Numerics.LinearAlgebra; |
|||
using MathNet.Numerics.LinearAlgebra.Storage; |
|||
using NUnit.Framework; |
|||
|
|||
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests |
|||
{ |
|||
#if NOSYSNUMERICS
|
|||
using Complex64 = Numerics.Complex; |
|||
#else
|
|||
using Complex64 = System.Numerics.Complex; |
|||
#endif
|
|||
|
|||
[TestFixture] |
|||
public class MatrixStorageSerializationTests |
|||
{ |
|||
static readonly Type[] KnownTypes = |
|||
{ |
|||
typeof(DenseColumnMajorMatrixStorage<double>), typeof(SparseCompressedRowMatrixStorage<double>), typeof(DiagonalMatrixStorage<double>), |
|||
typeof(DenseColumnMajorMatrixStorage<float>), typeof(SparseCompressedRowMatrixStorage<float>), typeof(DiagonalMatrixStorage<float>), |
|||
typeof(DenseColumnMajorMatrixStorage<Numerics.Complex32>), typeof(SparseCompressedRowMatrixStorage<Numerics.Complex32>), typeof(DiagonalMatrixStorage<Numerics.Complex32>), |
|||
typeof(DenseColumnMajorMatrixStorage<Complex64>), typeof(SparseCompressedRowMatrixStorage<Complex64>), typeof(DiagonalMatrixStorage<Complex64>) |
|||
}; |
|||
|
|||
[Test] |
|||
public void DenseColumnMajorMatrixStorageOfDoubleDataContractSerializationTest() |
|||
{ |
|||
MatrixStorage<double> expected = Matrix<double>.Build.Dense(2, 2, new[] { 1.0d, 2.0d, 0.0d, 3.0d }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(MatrixStorage<double>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (MatrixStorage<double>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.RowCount, Is.EqualTo(expected.RowCount)); |
|||
Assert.That(actual.ColumnCount, Is.EqualTo(expected.ColumnCount)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DenseColumnMajorMatrixStorage<double>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void DenseColumnMajorMatrixStorageOfSingleDataContractSerializationTest() |
|||
{ |
|||
MatrixStorage<float> expected = Matrix<float>.Build.Dense(2, 2, new[] { 1.0f, 2.0f, 0.0f, 3.0f }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(MatrixStorage<float>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (MatrixStorage<float>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.RowCount, Is.EqualTo(expected.RowCount)); |
|||
Assert.That(actual.ColumnCount, Is.EqualTo(expected.ColumnCount)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DenseColumnMajorMatrixStorage<float>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void DenseColumnMajorMatrixStorageOfComplex64DataContractSerializationTest() |
|||
{ |
|||
MatrixStorage<Complex64> expected = Matrix<Complex64>.Build.Dense(2, 2, new[] { new Complex64(1.0, -1.0), 2.0, 0.0, 3.0 }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(MatrixStorage<Complex64>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (MatrixStorage<Complex64>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.RowCount, Is.EqualTo(expected.RowCount)); |
|||
Assert.That(actual.ColumnCount, Is.EqualTo(expected.ColumnCount)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DenseColumnMajorMatrixStorage<Complex64>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void DenseColumnMajorMatrixStorageOfComplex32DataContractSerializationTest() |
|||
{ |
|||
MatrixStorage<Numerics.Complex32> expected = Matrix<Numerics.Complex32>.Build.Dense(2, 2, new[] { new Numerics.Complex32(1.0f, -1.0f), 2.0f, 0.0f, 3.0f }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(MatrixStorage<Numerics.Complex32>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (MatrixStorage<Numerics.Complex32>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.RowCount, Is.EqualTo(expected.RowCount)); |
|||
Assert.That(actual.ColumnCount, Is.EqualTo(expected.ColumnCount)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DenseColumnMajorMatrixStorage<Numerics.Complex32>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void SparseCompressedRowMatrixStorageOfDoubleDataContractSerializationTest() |
|||
{ |
|||
MatrixStorage<double> expected = Matrix<double>.Build.SparseOfArray(new[,] { {1.0d, 2.0d}, {0.0d, 3.0d} }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(MatrixStorage<double>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (MatrixStorage<double>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.RowCount, Is.EqualTo(expected.RowCount)); |
|||
Assert.That(actual.ColumnCount, Is.EqualTo(expected.ColumnCount)); |
|||
Assert.That(actual, Is.TypeOf(typeof(SparseCompressedRowMatrixStorage<double>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void DiagonalMatrixStorageOfDoubleDataContractSerializationTest() |
|||
{ |
|||
MatrixStorage<double> expected = Matrix<double>.Build.Diagonal(new[] { 1.0d, 2.0d, 0.0d, 3.0d }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(MatrixStorage<double>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (MatrixStorage<double>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.RowCount, Is.EqualTo(expected.RowCount)); |
|||
Assert.That(actual.ColumnCount, Is.EqualTo(expected.ColumnCount)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DiagonalMatrixStorage<double>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,117 @@ |
|||
using System; |
|||
using System.IO; |
|||
using System.Runtime.Serialization; |
|||
using MathNet.Numerics.LinearAlgebra; |
|||
using MathNet.Numerics.LinearAlgebra.Storage; |
|||
using NUnit.Framework; |
|||
|
|||
namespace MathNet.Numerics.UnitTests.LinearAlgebraTests |
|||
{ |
|||
#if NOSYSNUMERICS
|
|||
using Complex64 = Numerics.Complex; |
|||
#else
|
|||
using Complex64 = System.Numerics.Complex; |
|||
#endif
|
|||
|
|||
[TestFixture] |
|||
public class VectorStorageSerializationTests |
|||
{ |
|||
static readonly Type[] KnownTypes = |
|||
{ |
|||
typeof(DenseVectorStorage<double>), typeof(SparseVectorStorage<double>), |
|||
typeof(DenseVectorStorage<float>), typeof(SparseVectorStorage<float>), |
|||
typeof(DenseVectorStorage<Numerics.Complex32>), typeof(SparseVectorStorage<Numerics.Complex32>), |
|||
typeof(DenseVectorStorage<Complex64>), typeof(SparseVectorStorage<Complex64>) |
|||
}; |
|||
|
|||
[Test] |
|||
public void DenseVectorStorageOfDoubleDataContractSerializationTest() |
|||
{ |
|||
VectorStorage<double> expected = Vector<double>.Build.DenseOfArray(new[] { 1.0d, 2.0d, 0.0d, 3.0d }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(VectorStorage<double>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (VectorStorage<double>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.Length, Is.EqualTo(expected.Length)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DenseVectorStorage<double>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void DenseVectorStorageOfSingleDataContractSerializationTest() |
|||
{ |
|||
VectorStorage<float> expected = Vector<float>.Build.DenseOfArray(new[] { 1.0f, 2.0f, 0.0f, 3.0f }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(VectorStorage<float>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (VectorStorage<float>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.Length, Is.EqualTo(expected.Length)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DenseVectorStorage<float>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void DenseVectorStorageOfComplex64DataContractSerializationTest() |
|||
{ |
|||
VectorStorage<Complex64> expected = Vector<Complex64>.Build.DenseOfArray(new[] { new Complex64(1.0, -1.0), 2.0, 0.0, 3.0 }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(VectorStorage<Complex64>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (VectorStorage<Complex64>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.Length, Is.EqualTo(expected.Length)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DenseVectorStorage<Complex64>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void DenseVectorStorageOfComplex32DataContractSerializationTest() |
|||
{ |
|||
VectorStorage<Numerics.Complex32> expected = Vector<Numerics.Complex32>.Build.DenseOfArray(new[] { new Numerics.Complex32(1.0f, -1.0f), 2.0f, 0.0f, 3.0f }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(VectorStorage<Numerics.Complex32>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (VectorStorage<Numerics.Complex32>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.Length, Is.EqualTo(expected.Length)); |
|||
Assert.That(actual, Is.TypeOf(typeof(DenseVectorStorage<Numerics.Complex32>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
|
|||
[Test] |
|||
public void SparseVectorStorageOfDoubleDataContractSerializationTest() |
|||
{ |
|||
VectorStorage<double> expected = Vector<double>.Build.SparseOfArray(new[] { 1.0d, 2.0d, 0.0d, 3.0d }).Storage; |
|||
|
|||
var serializer = new DataContractSerializer(typeof(VectorStorage<double>), KnownTypes); |
|||
var stream = new MemoryStream(); |
|||
serializer.WriteObject(stream, expected); |
|||
stream.Position = 0; |
|||
|
|||
var actual = (VectorStorage<double>)serializer.ReadObject(stream); |
|||
|
|||
Assert.That(actual.Length, Is.EqualTo(expected.Length)); |
|||
Assert.That(actual, Is.TypeOf(typeof(SparseVectorStorage<double>))); |
|||
Assert.That(actual, Is.EqualTo(expected)); |
|||
Assert.That(actual, Is.Not.SameAs(expected)); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue