From 95c4434c4fccf28b68c45b423060d1133a95b0dd Mon Sep 17 00:00:00 2001 From: Knut Morten Okstad Date: Thu, 4 May 2017 06:32:47 +0200 Subject: [PATCH] Added: A few more Matrix unit tests for sum() and norm2(). Changed: Using EXPECT_EQ instead of ASSERT_EQ to capture all errors and not only the first. Avoid using tmpnam which sometimes gives compiler warnings. --- src/LinAlg/Test/TestMatrix.C | 46 +++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/src/LinAlg/Test/TestMatrix.C b/src/LinAlg/Test/TestMatrix.C index e29f3d45..5c746303 100644 --- a/src/LinAlg/Test/TestMatrix.C +++ b/src/LinAlg/Test/TestMatrix.C @@ -25,16 +25,16 @@ TEST(TestMatrix, AddBlock) std::iota(b.begin(),b.end(),1); a.addBlock(b, 2, 2, 2, false); - ASSERT_EQ(a(2,2), 7); - ASSERT_EQ(a(3,2), 10); - ASSERT_EQ(a(2,3), 14); - ASSERT_EQ(a(3,3), 17); + EXPECT_EQ(a(2,2), 7); + EXPECT_EQ(a(3,2), 10); + EXPECT_EQ(a(2,3), 14); + EXPECT_EQ(a(3,3), 17); a.addBlock(b, 1, 1, 1, true); - ASSERT_EQ(a(1,1), 2); - ASSERT_EQ(a(2,1), 5); - ASSERT_EQ(a(1,2), 6); - ASSERT_EQ(a(2,2), 11); + EXPECT_EQ(a(1,1), 2); + EXPECT_EQ(a(2,1), 5); + EXPECT_EQ(a(1,2), 6); + EXPECT_EQ(a(2,2), 11); } @@ -50,8 +50,8 @@ TEST(TestMatrix, AddRows) for (size_t j = 1; j <= 5; j++) { for (size_t i = 1; i <= 3; i++, fasit++) - ASSERT_EQ(a(i,j), fasit); - ASSERT_EQ(a(4,j), 0); + EXPECT_EQ(a(i,j), fasit); + EXPECT_EQ(a(4,j), 0); } a.expandRows(-2); @@ -59,22 +59,34 @@ TEST(TestMatrix, AddRows) fasit = 1; for (size_t j = 1; j <= 5; j++, fasit++) for (size_t i = 1; i <= 2; i++, fasit++) - ASSERT_EQ(a(i,j), fasit); + EXPECT_EQ(a(i,j), fasit); +} + + +TEST(TestMatrix, Norm) +{ + utl::matrix a(4,5); + std::iota(a.begin(),a.end(),1.0); + std::cout <<"A:"<< a; + + EXPECT_FLOAT_EQ(a.sum(),210.0); + EXPECT_FLOAT_EQ(a.sum(5),34.0); + EXPECT_FLOAT_EQ(a.asum(5),34.0); + EXPECT_NEAR(a.norm2(5),sqrt(414.0),1.0e-15); } TEST(TestMatrix3D, DumpRead) { - size_t n0(2), n1(3), n2(4); - utl::matrix3d A(n0, n1, n2); - Real* p = A.ptr(); - for (size_t i = 0; i A(2,3,4); + double i = 0.0; + for (auto p = A.begin(); p != A.end(); ++p, ++i) *p = 3.14159*i*i; - std::string fname = std::tmpnam(nullptr); + const char* fname = "/tmp/testMatrix3D.dat"; std::ofstream os(fname); os << std::setprecision(16) << A; - std::ifstream is(fname, std::ios::in); + std::ifstream is(fname,std::ios::in); utl::matrix3d B(is); B -= A; ASSERT_NEAR(B.norm2(), 0.0, 1.0e-13);