You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

82 lines
2.1 KiB

#include <test_common.h>
#include <catch2/catch.hpp>
#include <igl/readMSH.h>
#include <set>
template <typename MatD, typename MatI, typename VecI>
void test()
{
MatD X;
MatI Tri;
MatI Tet;
VecI TriTag;
VecI TetTag;
std::vector<std::string> XFields;
std::vector<std::string> EFields;
std::vector<MatD> XF;
std::vector<MatD> TriF;
std::vector<MatD> TetF;
REQUIRE(igl::readMSH(test_common::data_path("sphere_lowres_TMS_1-0001_Magstim_70mm_Fig8_nii_scalar.msh"),
X, Tri, Tet, TriTag, TetTag, XFields, XF, EFields, TriF, TetF));
REQUIRE(X.cols() == 3);
REQUIRE(X.rows() == (398+4506));
REQUIRE(Tri.cols() == 3);
REQUIRE(Tri.rows() == 8988);
REQUIRE(TriTag.rows() == 8988);
// determine all tags
std::set<int> tri_tags_unique;
for(size_t i=0; i<TriTag.rows(); ++i) tri_tags_unique.insert(TriTag(i));
REQUIRE(tri_tags_unique.size()==6);
// make sure we have tags 1001-1006
for(int i=1;i<6;++i)
REQUIRE(tri_tags_unique.find(i+1000)!=std::end(tri_tags_unique));
REQUIRE(Tet.cols() == 4);
REQUIRE(Tet.rows() == 25937);
REQUIRE(TetTag.rows() == 25937);
// determine all tags
std::set<int> tet_tags_unique;
for(size_t i=0; i<TetTag.rows(); ++i) tet_tags_unique.insert(TetTag(i));
REQUIRE(tet_tags_unique.size()==6);
// make sure we have tags 1-6
for(int i=1;i<6;++i)
REQUIRE(tet_tags_unique.find(i)!=std::end(tet_tags_unique));
REQUIRE(XFields.size()==0);
REQUIRE(EFields.size()==1);
REQUIRE(EFields[0]=="normE");
//make sure field sizes are correct
REQUIRE(XF.size()==0);
REQUIRE(TriF.size()==1);
REQUIRE(TetF.size()==1);
// normE , scalar field
REQUIRE(TriF[0].cols()==1);
REQUIRE(TriF[0].rows()==8988);
REQUIRE(TetF[0].cols()==1);
REQUIRE(TetF[0].rows()==25937);
}
TEST_CASE("readMSH","[igl]")
{
test<Eigen::MatrixXd,Eigen::MatrixXi,Eigen::VectorXi>();
test<
Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic,Eigen::RowMajor>,
Eigen::Matrix<int,Eigen::Dynamic,Eigen::Dynamic,Eigen::RowMajor>,
Eigen::VectorXi>();
}