readMSH.cpp 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #include <test_common.h>
  2. #include <catch2/catch.hpp>
  3. #include <igl/readMSH.h>
  4. #include <set>
  5. template <typename MatD, typename MatI, typename VecI>
  6. void test()
  7. {
  8. MatD X;
  9. MatI Tri;
  10. MatI Tet;
  11. VecI TriTag;
  12. VecI TetTag;
  13. std::vector<std::string> XFields;
  14. std::vector<std::string> EFields;
  15. std::vector<MatD> XF;
  16. std::vector<MatD> TriF;
  17. std::vector<MatD> TetF;
  18. REQUIRE(igl::readMSH(test_common::data_path("sphere_lowres_TMS_1-0001_Magstim_70mm_Fig8_nii_scalar.msh"),
  19. X, Tri, Tet, TriTag, TetTag, XFields, XF, EFields, TriF, TetF));
  20. REQUIRE(X.cols() == 3);
  21. REQUIRE(X.rows() == (398+4506));
  22. REQUIRE(Tri.cols() == 3);
  23. REQUIRE(Tri.rows() == 8988);
  24. REQUIRE(TriTag.rows() == 8988);
  25. // determine all tags
  26. std::set<int> tri_tags_unique;
  27. for(size_t i=0; i<TriTag.rows(); ++i) tri_tags_unique.insert(TriTag(i));
  28. REQUIRE(tri_tags_unique.size()==6);
  29. // make sure we have tags 1001-1006
  30. for(int i=1;i<6;++i)
  31. REQUIRE(tri_tags_unique.find(i+1000)!=std::end(tri_tags_unique));
  32. REQUIRE(Tet.cols() == 4);
  33. REQUIRE(Tet.rows() == 25937);
  34. REQUIRE(TetTag.rows() == 25937);
  35. // determine all tags
  36. std::set<int> tet_tags_unique;
  37. for(size_t i=0; i<TetTag.rows(); ++i) tet_tags_unique.insert(TetTag(i));
  38. REQUIRE(tet_tags_unique.size()==6);
  39. // make sure we have tags 1-6
  40. for(int i=1;i<6;++i)
  41. REQUIRE(tet_tags_unique.find(i)!=std::end(tet_tags_unique));
  42. REQUIRE(XFields.size()==0);
  43. REQUIRE(EFields.size()==1);
  44. REQUIRE(EFields[0]=="normE");
  45. //make sure field sizes are correct
  46. REQUIRE(XF.size()==0);
  47. REQUIRE(TriF.size()==1);
  48. REQUIRE(TetF.size()==1);
  49. // normE , scalar field
  50. REQUIRE(TriF[0].cols()==1);
  51. REQUIRE(TriF[0].rows()==8988);
  52. REQUIRE(TetF[0].cols()==1);
  53. REQUIRE(TetF[0].rows()==25937);
  54. }
  55. TEST_CASE("readMSH","[igl]")
  56. {
  57. test<Eigen::MatrixXd,Eigen::MatrixXi,Eigen::VectorXi>();
  58. test<
  59. Eigen::Matrix<double,Eigen::Dynamic,Eigen::Dynamic,Eigen::RowMajor>,
  60. Eigen::Matrix<int,Eigen::Dynamic,Eigen::Dynamic,Eigen::RowMajor>,
  61. Eigen::VectorXi>();
  62. }