slice_mask.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include <test_common.h>
  2. #include <igl/slice_mask.h>
  3. #include <igl/randperm.h>
  4. #include <igl/placeholders.h>
  5. #include <igl/find.h>
  6. TEST_CASE("slice_mask/find: random", "[igl]")
  7. {
  8. const int m = 100;
  9. const int n = 100;
  10. Eigen::MatrixXd X = Eigen::MatrixXd::Random(m,n);
  11. Eigen::VectorXi I;
  12. igl::randperm(m,I);
  13. Eigen::VectorXi J;
  14. igl::randperm(n,J);
  15. Eigen::Array<bool,Eigen::Dynamic,1> M =
  16. I.unaryExpr([](const int x) { return x%2 == 0; }).eval();
  17. Eigen::Array<bool,Eigen::Dynamic,1> N =
  18. J.unaryExpr([](const int x) { return x%2 == 0; }).eval();
  19. {
  20. Eigen::MatrixXd Yigl;
  21. igl::slice_mask(X,M,N,Yigl);
  22. Eigen::MatrixXd Yfind = X(igl::find(M),igl::find(N));
  23. test_common::assert_eq(Yigl,Yfind);
  24. }
  25. {
  26. Eigen::MatrixXd Yigl;
  27. igl::slice_mask(X,M,1,Yigl);
  28. Eigen::MatrixXd Yfind = X(igl::find(M),igl::placeholders::all);
  29. test_common::assert_eq(Yigl,Yfind);
  30. }
  31. {
  32. Eigen::MatrixXd Yigl;
  33. igl::slice_mask(X,N,2,Yigl);
  34. Eigen::MatrixXd Yfind = X(igl::placeholders::all,igl::find(N));
  35. test_common::assert_eq(Yigl,Yfind);
  36. }
  37. }