Files
SERiF/tests/meshIO/meshIOTest.cpp

45 lines
1.2 KiB
C++

#include <gtest/gtest.h>
#include "meshIO.h"
#include <iostream>
#include <string>
#include "mfem.hpp"
std::string EXAMPLE_FILENAME = std::string(getenv("MESON_SOURCE_ROOT")) + "/src/resources/mesh/sphere.msh";
double ComputeMeshVolume(mfem::Mesh &mesh)
{
double totalVolume = 0.0;
for (int i = 0; i < mesh.GetNE(); i++) // Loop over all elements
{
totalVolume += mesh.GetElementVolume(i);
}
return totalVolume;
}
class meshIOTest : public ::testing::Test {};
TEST_F(meshIOTest, DefaultConstructor) {
EXPECT_NO_THROW(MeshIO meshIO(EXAMPLE_FILENAME));
}
TEST_F(meshIOTest, IsLoaded) {
MeshIO meshIO(EXAMPLE_FILENAME);
EXPECT_EQ(meshIO.IsLoaded(), true);
}
TEST_F(meshIOTest, GetMesh) {
MeshIO meshIO(EXAMPLE_FILENAME);
mfem::Mesh& mesh = meshIO.GetMesh();
EXPECT_EQ(mesh.GetNE(), 18351);
EXPECT_EQ(mesh.GetNV(), 3768);
double volume = ComputeMeshVolume(mesh);
EXPECT_DOUBLE_EQ(volume, 4.160516453529322);
}
TEST_F(meshIOTest, LinearRescale) {
MeshIO meshIO(EXAMPLE_FILENAME, 5);
mfem::Mesh& mesh = meshIO.GetMesh();
double volume = ComputeMeshVolume(mesh);
EXPECT_DOUBLE_EQ(volume, 520.06455669116463);
}