Esempio n. 1
0
TEST(Hdf5Test, readWriteEigenMatrixXd)
{
  std::string tmpFileName("Hdf5Test_readWriteEigenMatrixXd.hdf");

  Hdf5DataFormat hdf5;
  ASSERT_TRUE(hdf5.openFile(tmpFileName, Hdf5DataFormat::ReadWriteTruncate))
      << "Opening test file '" << tmpFileName << "' failed.";

  Eigen::MatrixXd mat (10, 10);
  for (int row = 0; row < 10; ++row) {
    for (int col = 0; col < 10; ++col) {
      mat(row, col) = row * col * col + row + col;
    }
  }

  EXPECT_TRUE(hdf5.writeDataset("/Group1/Group2/Data", mat))
      << "Writing Eigen::MatrixXd failed.";

  Eigen::MatrixXd matRead;
  EXPECT_TRUE(hdf5.readDataset("/Group1/Group2/Data", matRead))
      << "Reading Eigen::MatrixXd failed.";
  EXPECT_TRUE(mat.isApprox(matRead))
      << "Matrix read does not match matrix written.\nWritten:\n" << mat
      << "\nRead:\n" << matRead;

  ASSERT_TRUE(hdf5.closeFile())
      << "Closing test file '" << tmpFileName << "' failed.";

  remove(tmpFileName.c_str());
}