From e6b2ff7e7eef4beabd8258ec1b6b6b99096f9399 Mon Sep 17 00:00:00 2001 From: Biljana Bojovic Date: Fri, 24 Mar 2023 18:14:22 +0100 Subject: [PATCH] core: Add an additional test case for MatrixArray transpose --- src/core/test/matrix-array-test-suite.cc | 31 ++++++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/core/test/matrix-array-test-suite.cc b/src/core/test/matrix-array-test-suite.cc index d1bfaaabf..afd2b43cd 100644 --- a/src/core/test/matrix-array-test-suite.cc +++ b/src/core/test/matrix-array-test-suite.cc @@ -191,6 +191,27 @@ MatrixArrayTestCase::DoRun() NS_TEST_ASSERT_MSG_EQ(m6, m8, "These two matrices should be equal"); NS_LOG_INFO("m8 = m5.Transpose ()" << m8); + // test transpose using initialization arrays + std::valarray a{0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4}; + std::valarray b{0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4}; + std::valarray aCasted(a.size()); + std::valarray bCasted(b.size()); + for (size_t i = 0; i < a.size(); ++i) + { + aCasted[i] = static_cast(a[i]); + } + for (size_t i = 0; i < b.size(); ++i) + { + bCasted[i] = static_cast(b[i]); + } + m5 = MatrixArray(3, 5, 1, aCasted); + m6 = MatrixArray(5, 3, 1, bCasted); + m8 = m5.Transpose(); + NS_TEST_ASSERT_MSG_EQ(m6, m8, "These two matrices should be equal"); + NS_LOG_INFO("m5 (3, 5, 1):" << m5); + NS_LOG_INFO("m6 (5, 3, 1):" << m6); + NS_LOG_INFO("m8 (5, 3, 1) = m5.Transpose ()" << m8); + // test 1D array creation, i.e. vector and transposing it MatrixArray m9 = MatrixArray(std::vector({0, 1, 2, 3, 4, 5, 6, 7})); NS_TEST_ASSERT_MSG_EQ((m9.GetNumRows() == 8) && (m9.GetNumCols() == 1) && @@ -219,12 +240,12 @@ MatrixArrayTestCase::DoRun() // test multiplication by using an initialization matrixArray // matrix dimensions in each page are 2x3, 3x2, and the resulting matrix per page is a square // matrix 2x2 - std::valarray a{0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5}; - std::valarray b{0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}; + a = {0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5}; + b = {0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1}; std::valarray c{2, 3, 4, 6, 2, 3, 4, 6}; - std::valarray aCasted(a.size()); - std::valarray bCasted(b.size()); - std::valarray cCasted(c.size()); + aCasted = std::valarray(a.size()); + bCasted = std::valarray(b.size()); + std::valarray cCasted = std::valarray(c.size()); for (size_t i = 0; i < a.size(); ++i) {