public void ToComplexMatrixTest() { // value is null { ComplexMatrix actual = (ComplexMatrixRow)(null); Assert.IsNull(actual); actual = ComplexMatrixRow.ToComplexMatrix(null); Assert.IsNull(actual); } // value is not null { ComplexMatrix matrix = ComplexMatrix.Dense(2, 3, new Complex[6] { 1, 2, 3, 4, 5, 6 }); var rows = matrix.AsRowCollection(); for (int i = 0; i < matrix.NumberOfRows; i++) { var expected = matrix[i, ":"]; ComplexMatrix actual = rows[i]; ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); actual = ComplexMatrixRow.ToComplexMatrix(rows[i]); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } } }
public void ToComplexMatrixTest() { // value is null { ComplexMatrix actual = (ComplexMatrixRowCollection)(null); Assert.IsNull(actual); actual = ComplexMatrixRowCollection.ToComplexMatrix(null); Assert.IsNull(actual); } // value is not null { ComplexMatrix matrix = ComplexMatrix.Dense(2, 3, new Complex[6] { 1, 2, 3, 4, 5, 6 }); var rows = matrix.AsRowCollection(); var expected = matrix; var actual = (ComplexMatrix)rows; ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); actual = ComplexMatrixRowCollection.ToComplexMatrix(rows); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } }
private static void TestSerializationToPath( TestableComplexMatrix testableMatrix, string partialPath) { // dense { var expected = testableMatrix.AsDense; var path = "dense-" + partialPath; CsvComplexMatrixSerializer.Serialize(path, expected); var actual = CsvComplexMatrixSerializer.Deserialize(path); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } // sparse { var expected = testableMatrix.AsSparse; var path = "sparse-" + partialPath; CsvComplexMatrixSerializer.Serialize(path, expected); var actual = CsvComplexMatrixSerializer.Deserialize(path); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } // read-only dense { var expected = testableMatrix.AsDense; var path = "read-only-dense-" + partialPath; CsvComplexMatrixSerializer.Serialize(path, expected.AsReadOnly()); var actual = CsvComplexMatrixSerializer.Deserialize(path); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } // read-only sparse { var expected = testableMatrix.AsSparse; var path = "read-only-sparse-" + partialPath; CsvComplexMatrixSerializer.Serialize(path, expected.AsReadOnly()); var actual = CsvComplexMatrixSerializer.Deserialize(path); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } }
public void AsComplexMatrixTest() { ComplexMatrix expected = ComplexMatrix.Dense(2, 3, new Complex[6] { 1, 2, 3, 4, 5, 6 }); var doubleMatrixRowCollection = expected.AsRowCollection(); var actual = doubleMatrixRowCollection; ComplexMatrixAssert.IsStateAsExpected( expectedState: new ComplexMatrixState( asColumnMajorDenseArray: new Complex[6] { 1, 2, 3, 4, 5, 6 }, numberOfRows: 2, numberOfColumns: 3), actualMatrix: actual, delta: ComplexMatrixTest.Accuracy); }
private static void TestSerializationToStream( TestableComplexMatrix testableMatrix) { // dense { var expected = testableMatrix.AsDense; MemoryStream stream = new(); var textWriter = new StreamWriter(stream); CsvComplexMatrixSerializer.Serialize(textWriter, expected); stream.Position = 0; var textReader = new StreamReader(stream); var actual = CsvComplexMatrixSerializer.Deserialize(textReader); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } // sparse { var expected = testableMatrix.AsSparse; MemoryStream stream = new(); var textWriter = new StreamWriter(stream); CsvComplexMatrixSerializer.Serialize(textWriter, expected); stream.Position = 0; var textReader = new StreamReader(stream); var actual = CsvComplexMatrixSerializer.Deserialize(textReader); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } // read-only dense { var expected = testableMatrix.AsDense; MemoryStream stream = new(); var textWriter = new StreamWriter(stream); CsvComplexMatrixSerializer.Serialize(textWriter, expected.AsReadOnly()); stream.Position = 0; var textReader = new StreamReader(stream); var actual = CsvComplexMatrixSerializer.Deserialize(textReader); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } // read-only sparse { var expected = testableMatrix.AsSparse; MemoryStream stream = new(); var textWriter = new StreamWriter(stream); CsvComplexMatrixSerializer.Serialize(textWriter, expected.AsReadOnly()); stream.Position = 0; var textReader = new StreamReader(stream); var actual = CsvComplexMatrixSerializer.Deserialize(textReader); ComplexMatrixAssert.AreEqual(expected, actual, ComplexMatrixTest.Accuracy); } }
public void IndexSetTest() { // value is less than 0 { ComplexMatrix matrix = ComplexMatrix.Dense(2, 3, new Complex[6] { 1, 2, 3, 4, 5, 6 }); var rows = matrix.AsRowCollection(); var target = rows[0]; ArgumentExceptionAssert.Throw( () => { target.Index = -1; }, expectedType: typeof(ArgumentOutOfRangeException), expectedPartialMessage: ImplementationServices.GetResourceString( "STR_EXCEPT_TAB_INDEX_EXCEEDS_DIMS"), expectedParameterName: "value"); } // value is greater than NumberOfColumns - 1 { ComplexMatrix matrix = ComplexMatrix.Dense(2, 3, new Complex[6] { 1, 2, 3, 4, 5, 6 }); var rows = matrix.AsRowCollection(); var target = rows[0]; ArgumentExceptionAssert.Throw( () => { target.Index = matrix.NumberOfColumns; }, expectedType: typeof(ArgumentOutOfRangeException), expectedPartialMessage: ImplementationServices.GetResourceString( "STR_EXCEPT_TAB_INDEX_EXCEEDS_DIMS"), expectedParameterName: "value"); } // Setting Index without changing its value { var subscriber = new PropertyChangedSubscriber(); ComplexMatrix matrix = ComplexMatrix.Dense(2, 3, new Complex[6] { 1, 2, 3, 4, 5, 6 }); var rows = matrix.AsRowCollection(); for (int i = 0; i < matrix.NumberOfRows; i++) { var target = rows[i]; target.PropertyChanged += subscriber.PropertyChangedEventHandler; target.Index = i; Assert.AreEqual(expected: i, actual: target.Index); } } // Setting Index changing its value { var subscriber = new PropertyChangedSubscriber(); ComplexMatrix matrix = ComplexMatrix.Dense(2, 3, new Complex[6] { 1, 2, 3, 4, 5, 6 }); var rows = matrix.AsRowCollection(); var target = rows[0]; target.PropertyChanged += subscriber.PropertyChangedEventHandler; int expectedIndex = 1; target.Index = expectedIndex; Assert.AreEqual(expectedIndex, target.Index); ComplexMatrixAssert.AreEqual( matrix[expectedIndex, ":"], target, ComplexMatrixTest.Accuracy); } }