From 83afec59e4976bbfd5a890b88e4767739b722192 Mon Sep 17 00:00:00 2001 From: Enrico Guiraud <enrico.guiraud@cern.ch> Date: Tue, 12 Feb 2019 11:07:39 +0100 Subject: [PATCH] [DF] Let Filter accept return values convertible to bool ...and add test coverage --- tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx | 3 ++- tree/dataframe/test/dataframe_simple.cxx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx b/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx index 3b8d8b76e28..4a971041ef8 100644 --- a/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx +++ b/tree/dataframe/inc/ROOT/RDF/InterfaceUtils.hxx @@ -265,7 +265,8 @@ template <typename Filter> void CheckFilter(Filter &) { using FilterRet_t = typename RDF::CallableTraits<Filter>::ret_type; - static_assert(std::is_same<FilterRet_t, bool>::value, "filter functions must return a bool"); + static_assert(std::is_convertible<FilterRet_t, bool>::value, + "filter expression returns a type that is not convertible to bool"); } void CheckCustomColumn(std::string_view definedCol, TTree *treePtr, const ColumnNames_t &customCols, diff --git a/tree/dataframe/test/dataframe_simple.cxx b/tree/dataframe/test/dataframe_simple.cxx index 6cadccc01f7..5e014afd725 100644 --- a/tree/dataframe/test/dataframe_simple.cxx +++ b/tree/dataframe/test/dataframe_simple.cxx @@ -399,7 +399,7 @@ TEST_P(RDFSimpleTests, Define_Multiple) TEST_P(RDFSimpleTests, Define_Multiple_Filter) { RDataFrame tdf(3); - auto notFilteringFilter = [](int b1) { return b1 > 0; }; + auto notFilteringFilter = [](int b1) { return b1; }; // also tests returning a type convertible to bool auto filteringFilter = [](int b2) { return b2 < 1; }; auto root = tdf.Define("root", "0"); -- GitLab