53TEST_CASE(
"Testing IntegralInvariant Shortcuts API" )
56 params(
"polynomial",
"goursat" )(
"gridstep", 1. );
65 trace.
info() <<
"Nb surfels= " << surfels.size() << std::endl;
68 params(
"r-radius", 3.0);
76 auto params_parallel = params;
77 params_parallel(
"ii-thread-number", 4 )(
"ii-split-axis", 2 );
83 std::vector<double> k1,k2,G;
84 for(
auto &result: Tcurv)
86 k1.push_back( std::get<0>(result) );
87 k2.push_back( std::get<1>(result) );
88 G.push_back( ( std::get<0>(result) * std::get<1>(result)) );
91 SECTION(
"Testing that mean/Gaussian/tensor curvature shortucut values match")
93 for(std::size_t i = 0; i < G.size(); ++i)
94 REQUIRE( Kcurv[i] == Approx( G[i] ) );
97 SECTION(
"Testing that requesting the parallel II shortcut preserves curvature values")
99 REQUIRE( HcurvParallel.size() == Hcurv.size() );
100 REQUIRE( KcurvParallel.size() == Kcurv.size() );
101 REQUIRE( TcurvParallel.size() == Tcurv.size() );
103 for ( std::size_t i = 0; i < Hcurv.size(); ++i )
104 REQUIRE( HcurvParallel[ i ] == Approx( Hcurv[ i ] ) );
106 for ( std::size_t i = 0; i < Kcurv.size(); ++i )
107 REQUIRE( KcurvParallel[ i ] == Approx( Kcurv[ i ] ) );
109 for ( std::size_t i = 0; i < Tcurv.size(); ++i )
111 REQUIRE( std::get<0>( TcurvParallel[ i ] ) == Approx( std::get<0>( Tcurv[ i ] ) ) );
112 REQUIRE( std::get<1>( TcurvParallel[ i ] ) == Approx( std::get<1>( Tcurv[ i ] ) ) );
116 SECTION(
"Testing that requesting the parallel II shortcut preserves normal vectors")
118 REQUIRE( NcurvParallel.size() == Ncurv.size() );
120 for ( std::size_t i = 0; i < Ncurv.size(); ++i )
121 for ( std::size_t d = 0; d < 3; ++d )
122 REQUIRE( NcurvParallel[ i ][ d ] == Approx( Ncurv[ i ][ d ] ) );
125 SECTION(
"Testing that ii-split-axis accepts out-of-range values by clamping to a valid axis")
127 auto params_parallel_clamped = params;
128 params_parallel_clamped(
"ii-thread-number", 4 )(
"ii-split-axis", 2 );
131 REQUIRE( HcurvParallelClamped.size() == Hcurv.size() );
132 for ( std::size_t i = 0; i < Hcurv.size(); ++i )
133 REQUIRE( HcurvParallelClamped[ i ] == Approx( Hcurv[ i ] ) );
136 SECTION(
"Testing on shifted domains")
151 trace.
info() <<
"Nb surfels= " << surfels.size() <<
" "<<shifted<<
" "<<Ks<<std::endl;
const Point & lowerBound() const
const Point & upperBound() const
bool init(const Point &lower, const Point &upper, bool isClosed)
Specifies the upper and lower bounds for the maximal cells in this space.