@@ -345,15 +345,31 @@ namespace xf
345345 EXPECT_EQ(std::min(sa, a.select(sel)), minimum(sa, a).select(sel));
346346 }*/
347347
348- // TODO: enable this once clamp functor is fixed in xtensor
349- /* TEST(xvariable_math, clip)
348+ TEST (xvariable_math, clip)
350349 {
350+ auto missing = xtl::missing<double >();
351+ using data_type = xt::xoptional_assembly<xt::xarray<double >, xt::xarray<bool >>;
352+
351353 variable_type a = make_test_variable ();
352- dict_type sel = make_selector_aa();
353- xtl::xoptional<double> floor = 1.2;
354- xtl::xoptional<double> ceil = 2.4;
355- EXPECT_EQ(clip(a.select(sel), floor, ceil), clip(a, floor, ceil).select(sel));
356- }*/
354+
355+ variable_type res = clip (a, 2 ., 8.0 );
356+ data_type expected = {{ 2 , 2 , missing},
357+ {missing, 5 , 6 },
358+ { 7 , 8 , 8 }};
359+ EXPECT_EQ (res.data (), expected);
360+
361+ variable_type res2 = clip (a, missing, missing);
362+ data_type expected2 = {{missing, missing, missing},
363+ {missing, missing, missing},
364+ {missing, missing, missing}};
365+ EXPECT_EQ (res2.data (), expected2);
366+
367+ variable_type res3 = clip (a, missing, 4 .);
368+ data_type expected3 = {{missing, missing, missing},
369+ {missing, missing, missing},
370+ {missing, missing, missing}};
371+ EXPECT_EQ (res3.data (), expected3);
372+ }
357373
358374 TEST (xvariable_math, sign)
359375 {
0 commit comments