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.
This commit is contained in:
Knut Morten Okstad 2017-05-04 06:32:47 +02:00
parent 2e368af97a
commit 95c4434c4f

View File

@ -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<double> 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<double> A(n0, n1, n2);
Real* p = A.ptr();
for (size_t i = 0; i<A.size(); ++i, ++p)
utl::matrix3d<double> 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<double> B(is);
B -= A;
ASSERT_NEAR(B.norm2(), 0.0, 1.0e-13);