ismember.cpp 943 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include <test_common.h>
  2. #include <igl/ismember.h>
  3. #include <igl/matlab_format.h>
  4. TEST(ismember, simple)
  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. ASSERT_GE(LOCB(i,j),0);
  31. ASSERT_LT(LOCB(i,j),B.size());
  32. ASSERT_EQ(vB(LOCB(i,j)),A(i,j));
  33. ASSERT_EQ(LOCB(i,j),bi);
  34. }else
  35. {
  36. ASSERT_EQ(LOCB(i,j),-1);
  37. ASSERT_EQ(bi,B.size());
  38. }
  39. }
  40. }
  41. }