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