setdiff.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include <test_common.h>
  2. #include <igl/setdiff.h>
  3. TEST_CASE("setdiff: matrix", "[igl]")
  4. {
  5. // Base cases
  6. {
  7. const Eigen::VectorXi A = (Eigen::VectorXi(4)<<1,2,1,3).finished();
  8. const Eigen::VectorXi B(0,1);
  9. Eigen::VectorXi C,IA;
  10. const Eigen::VectorXi cC = (Eigen::VectorXi(3)<<1,2,3).finished();
  11. const Eigen::VectorXi cIA = (Eigen::VectorXi(3)<<0,1,3).finished();
  12. igl::setdiff(A,B,C,IA);
  13. test_common::assert_eq(C,cC);
  14. test_common::assert_eq(IA,cIA);
  15. }
  16. {
  17. const Eigen::VectorXi A(0,1);
  18. const Eigen::VectorXi B = (Eigen::VectorXi(4)<<1,2,1,3).finished();
  19. Eigen::VectorXi C,IA;
  20. const Eigen::VectorXi cC(0,1);
  21. const Eigen::VectorXi cIA(0,1);
  22. igl::setdiff(A,B,C,IA);
  23. test_common::assert_eq(C,cC);
  24. test_common::assert_eq(IA,cIA);
  25. }
  26. {
  27. // Monkey test
  28. Eigen::VectorXi A(12);
  29. A = (Eigen::VectorXd::Random(A.size(),1).array().abs()*9).cast<int>();
  30. Eigen::VectorXi B(12);
  31. B = (Eigen::VectorXd::Random(B.size(),1).array().abs()*9).cast<int>();
  32. Eigen::VectorXi C,IA;
  33. igl::setdiff(A,B,C,IA);
  34. for(int i = 0;i<C.size();i++)
  35. {
  36. REQUIRE (A(IA(i)) == C(i));
  37. for(int j = 0;j<B.size();j++)
  38. {
  39. REQUIRE (C(i) != B(j));
  40. }
  41. }
  42. }
  43. }