ismember.cpp 970 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <test_common.h>
  2. #include <igl/ismember.h>
  3. #include <igl/matlab_format.h>
  4. TEST_CASE("ismember: simple", "[igl]")
  5. {
  6. Eigen::MatrixXi A(3,4);
  7. A<<11,12,13,14,21,22,23,24,31,32,33,34;
  8. Eigen::MatrixXi B(2,3);
  9. B<<11,13,11,21,22,34;
  10. Eigen::Matrix<bool,Eigen::Dynamic,Eigen::Dynamic> IA;
  11. Eigen::MatrixXi LOCB;
  12. igl::ismember(A,B,IA,LOCB);
  13. Eigen::Map<Eigen::VectorXi> vB =
  14. Eigen::Map<Eigen::VectorXi>(B.data(),B.rows()*B.cols());
  15. for(int i = 0;i<A.rows();i++)
  16. {
  17. for(int j = 0;j<A.cols();j++)
  18. {
  19. // try to find in b
  20. int bi = 0;
  21. for(;bi<vB.size();bi++)
  22. {
  23. if(A(i,j) == vB(bi))
  24. {
  25. break;
  26. }
  27. }
  28. if(IA(i,j))
  29. {
  30. REQUIRE (0 <= LOCB(i,j));
  31. REQUIRE (B.size() > LOCB(i,j));
  32. REQUIRE (A(i,j) == vB(LOCB(i,j)));
  33. REQUIRE (bi == LOCB(i,j));
  34. }else
  35. {
  36. REQUIRE (-1 == LOCB(i,j));
  37. REQUIRE (B.size() == bi);
  38. }
  39. }
  40. }
  41. }