|
@@ -3,89 +3,85 @@
|
|
#include <igl/STR.h>
|
|
#include <igl/STR.h>
|
|
#include <tuple>
|
|
#include <tuple>
|
|
|
|
|
|
-// namespace sort
|
|
|
|
-// {
|
|
|
|
-// typedef std::tuple<int/*n*/,int/*m*/,int/*dim*/,bool/*ascending*/>
|
|
|
|
-// NMDimAscending;
|
|
|
|
-// inline std::string NMDimAscending_test_name(
|
|
|
|
-// const ::testing::TestParamInfo<NMDimAscending>& info)
|
|
|
|
-// {
|
|
|
|
-// return STR(
|
|
|
|
-// std::get<0>(info.param)<<"x"<<
|
|
|
|
-// std::get<1>(info.param)<<"_"<<
|
|
|
|
-// "dim_"<<std::get<2>(info.param)<<"_"<<
|
|
|
|
-// "ascending_"<<(std::get<3>(info.param)?"true":"false"));
|
|
|
|
-// };
|
|
|
|
-// }
|
|
|
|
-// class SortTest : public ::testing::TestWithParam<sort::NMDimAscending> {};
|
|
|
|
|
|
+namespace sort
|
|
|
|
+{
|
|
|
|
+ typedef std::tuple<int/*n*/,int/*m*/,int/*dim*/,bool/*ascending*/> NMDimAscending;
|
|
|
|
+ // inline std::string NMDimAscending_test_name(
|
|
|
|
+ // const ::testing::TestParamInfo<NMDimAscending>& info)
|
|
|
|
+ // {
|
|
|
|
+ // return STR(
|
|
|
|
+ // std::get<0>(info.param)<<"x"<<
|
|
|
|
+ // std::get<1>(info.param)<<"_"<<
|
|
|
|
+ // "dim_"<<std::get<2>(info.param)<<"_"<<
|
|
|
|
+ // "ascending_"<<(std::get<3>(info.param)?"true":"false"));
|
|
|
|
+ // };
|
|
|
|
+}
|
|
|
|
|
|
-// TEST_P(SortTest,random)
|
|
|
|
-// {
|
|
|
|
-// const int n = std::get<0>(GetParam());
|
|
|
|
-// const int m = std::get<1>(GetParam());
|
|
|
|
-// const int dim = std::get<2>(GetParam());
|
|
|
|
-// const bool ascending = std::get<3>(GetParam());
|
|
|
|
-// Eigen::MatrixXd X = Eigen::MatrixXd::Random(n,m);
|
|
|
|
-// // sort ascending
|
|
|
|
-// Eigen::MatrixXd Y;
|
|
|
|
-// Eigen::MatrixXi IX;
|
|
|
|
-// igl::sort(X,dim,ascending,Y,IX);
|
|
|
|
-// REQUIRE (Y.rows() == X.rows());
|
|
|
|
-// REQUIRE (Y.cols() == X.cols());
|
|
|
|
-// REQUIRE (IX.rows() == X.rows());
|
|
|
|
-// REQUIRE (IX.cols() == X.cols());
|
|
|
|
-// for(int i = 0;i<n;i++)
|
|
|
|
-// {
|
|
|
|
-// for(int j = 0;j<m;j++)
|
|
|
|
-// {
|
|
|
|
-// REQUIRE (X(dim==1?IX(i,j):i,dim==2?IX(i,j):j) == Y(i,j));
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// for(int i = (dim==1?1:0);i<n;i++)
|
|
|
|
-// {
|
|
|
|
-// for(int j = (dim==2?1:0);j<m;j++)
|
|
|
|
-// {
|
|
|
|
-// if(ascending)
|
|
|
|
-// {
|
|
|
|
-// REQUIRE (Y(i,j) >= Y(i-(dim==1?1:0),j-(dim==2?1:0)));
|
|
|
|
-// }else
|
|
|
|
-// {
|
|
|
|
-// REQUIRE (Y(i,j) <= Y(i-(dim==1?1:0),j-(dim==2?1:0)));
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
|
|
+TEST_CASE("SortTest: random", "[igl]")
|
|
|
|
+{
|
|
|
|
+ const auto test_case = [](const sort::NMDimAscending ¶m)
|
|
|
|
+ {
|
|
|
|
+ const int n = std::get<0>(param);
|
|
|
|
+ const int m = std::get<1>(param);
|
|
|
|
+ const int dim = std::get<2>(param);
|
|
|
|
+ const bool ascending = std::get<3>(param);
|
|
|
|
+ Eigen::MatrixXd X = Eigen::MatrixXd::Random(n,m);
|
|
|
|
+ // sort ascending
|
|
|
|
+ Eigen::MatrixXd Y;
|
|
|
|
+ Eigen::MatrixXi IX;
|
|
|
|
+ igl::sort(X,dim,ascending,Y,IX);
|
|
|
|
+ REQUIRE (Y.rows() == X.rows());
|
|
|
|
+ REQUIRE (Y.cols() == X.cols());
|
|
|
|
+ REQUIRE (IX.rows() == X.rows());
|
|
|
|
+ REQUIRE (IX.cols() == X.cols());
|
|
|
|
+ for(int i = 0;i<n;i++)
|
|
|
|
+ {
|
|
|
|
+ for(int j = 0;j<m;j++)
|
|
|
|
+ {
|
|
|
|
+ REQUIRE (X(dim==1?IX(i,j):i,dim==2?IX(i,j):j) == Y(i,j));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for(int i = (dim==1?1:0);i<n;i++)
|
|
|
|
+ {
|
|
|
|
+ for(int j = (dim==2?1:0);j<m;j++)
|
|
|
|
+ {
|
|
|
|
+ if(ascending)
|
|
|
|
+ {
|
|
|
|
+ REQUIRE (Y(i,j) >= Y(i-(dim==1?1:0),j-(dim==2?1:0)));
|
|
|
|
+ }else
|
|
|
|
+ {
|
|
|
|
+ REQUIRE (Y(i,j) <= Y(i-(dim==1?1:0),j-(dim==2?1:0)));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
|
|
-// INSTANTIATE_TEST_CASE_P
|
|
|
|
-// (
|
|
|
|
-// suite,
|
|
|
|
-// SortTest,
|
|
|
|
-// ::testing::ValuesIn<std::vector<sort::NMDimAscending> >(
|
|
|
|
-// std::vector<sort::NMDimAscending> {
|
|
|
|
-// sort::NMDimAscending{100,3,1,true},
|
|
|
|
-// sort::NMDimAscending{100,3,2,true},
|
|
|
|
-// sort::NMDimAscending{100,3,1,false},
|
|
|
|
-// sort::NMDimAscending{100,3,2,false},
|
|
|
|
-// sort::NMDimAscending{3,100,1,true},
|
|
|
|
-// sort::NMDimAscending{3,100,2,true},
|
|
|
|
-// sort::NMDimAscending{3,100,1,false},
|
|
|
|
-// sort::NMDimAscending{3,100,2,false},
|
|
|
|
-// sort::NMDimAscending{100,2,1,true},
|
|
|
|
-// sort::NMDimAscending{100,2,2,true},
|
|
|
|
-// sort::NMDimAscending{100,2,1,false},
|
|
|
|
-// sort::NMDimAscending{100,2,2,false},
|
|
|
|
-// sort::NMDimAscending{2,100,1,true},
|
|
|
|
-// sort::NMDimAscending{2,100,2,true},
|
|
|
|
-// sort::NMDimAscending{2,100,1,false},
|
|
|
|
-// sort::NMDimAscending{2,100,2,false},
|
|
|
|
-// sort::NMDimAscending{100,4,1,true},
|
|
|
|
-// sort::NMDimAscending{100,4,2,true},
|
|
|
|
-// sort::NMDimAscending{100,4,1,false},
|
|
|
|
-// sort::NMDimAscending{100,4,2,false},
|
|
|
|
-// sort::NMDimAscending{4,100,1,true},
|
|
|
|
-// sort::NMDimAscending{4,100,2,true},
|
|
|
|
-// sort::NMDimAscending{4,100,1,false},
|
|
|
|
-// sort::NMDimAscending{4,100,2,false},
|
|
|
|
-// }),
|
|
|
|
-// sort::NMDimAscending_test_name
|
|
|
|
-// );
|
|
|
|
|
|
+ std::vector<sort::NMDimAscending> params = {
|
|
|
|
+ sort::NMDimAscending{100,3,1,true},
|
|
|
|
+ sort::NMDimAscending{100,3,2,true},
|
|
|
|
+ sort::NMDimAscending{100,3,1,false},
|
|
|
|
+ sort::NMDimAscending{100,3,2,false},
|
|
|
|
+ sort::NMDimAscending{3,100,1,true},
|
|
|
|
+ sort::NMDimAscending{3,100,2,true},
|
|
|
|
+ sort::NMDimAscending{3,100,1,false},
|
|
|
|
+ sort::NMDimAscending{3,100,2,false},
|
|
|
|
+ sort::NMDimAscending{100,2,1,true},
|
|
|
|
+ sort::NMDimAscending{100,2,2,true},
|
|
|
|
+ sort::NMDimAscending{100,2,1,false},
|
|
|
|
+ sort::NMDimAscending{100,2,2,false},
|
|
|
|
+ sort::NMDimAscending{2,100,1,true},
|
|
|
|
+ sort::NMDimAscending{2,100,2,true},
|
|
|
|
+ sort::NMDimAscending{2,100,1,false},
|
|
|
|
+ sort::NMDimAscending{2,100,2,false},
|
|
|
|
+ sort::NMDimAscending{100,4,1,true},
|
|
|
|
+ sort::NMDimAscending{100,4,2,true},
|
|
|
|
+ sort::NMDimAscending{100,4,1,false},
|
|
|
|
+ sort::NMDimAscending{100,4,2,false},
|
|
|
|
+ sort::NMDimAscending{4,100,1,true},
|
|
|
|
+ sort::NMDimAscending{4,100,2,true},
|
|
|
|
+ sort::NMDimAscending{4,100,1,false},
|
|
|
|
+ sort::NMDimAscending{4,100,2,false},
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ test_common::run_test_cases(params, test_case);
|
|
|
|
+}
|