コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
            }
        }
コード例 #6
0
        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);
            }
        }