slice_mask.cpp 1.0 KB

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