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