MshLoader.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include <test_common.h>
  2. #include <catch2/catch.hpp>
  3. #include <igl/MshLoader.h>
  4. TEST_CASE("MshLoader","[igl]")
  5. {
  6. igl::MshLoader msh_loader(test_common::data_path("sphere_lowres_TMS_1-0001_Magstim_70mm_Fig8_nii_scalar.msh"));
  7. //
  8. // size of nodes - 3xNodes (x,y,z)
  9. //
  10. REQUIRE( msh_loader.get_nodes().size() == (398+4506)*3 );
  11. //
  12. // size of elements: number of triangles x 3
  13. // number of tetrahedra x 4
  14. //
  15. REQUIRE( msh_loader.get_elements().size() == (8988*3 + 25937*4) );
  16. // all these should have the same size
  17. REQUIRE( msh_loader.get_elements_lengths().size() == (8988 + 25937) );
  18. REQUIRE( msh_loader.get_elements_ids().size() == (8988 + 25937) );
  19. REQUIRE( msh_loader.get_elements_types().size() == (8988 + 25937) );
  20. // the test file should have identity map
  21. REQUIRE( msh_loader.is_element_map_identity() );
  22. // there should be 12 tags: 6 surface structures and 6 volume structures
  23. // index 1st structure tag: Volumes
  24. msh_loader.index_structures(1);
  25. REQUIRE( msh_loader.is_element_map_identity() );
  26. REQUIRE( msh_loader.get_structures().size() == 6+6 );
  27. // verify that all triangle elements have length of 3 and
  28. // tetrahedral elements have length 4
  29. for(auto t =msh_loader.get_structures().begin();
  30. t!=msh_loader.get_structures().end(); ++t )
  31. {
  32. REQUIRE(( t->el_type == igl::MshLoader::ELEMENT_TRI ||
  33. t->el_type == igl::MshLoader::ELEMENT_TET ));
  34. auto element_range = msh_loader.get_structure_index().equal_range(*t);
  35. for(auto e=element_range.first; e != element_range.second; ++e)
  36. {
  37. if( t->el_type == igl::MshLoader::ELEMENT_TRI )
  38. {
  39. REQUIRE( msh_loader.get_elements_lengths()[e->second] == 3 );
  40. } else {
  41. // t->first.el_type==MshLoader::ELEMENT_TET
  42. REQUIRE( msh_loader.get_elements_lengths()[e->second] == 4 );
  43. }
  44. }
  45. }
  46. }