From d67a2ac920fbad21dab5af815c22196a517842be Mon Sep 17 00:00:00 2001
From: Enrico Guiraud <enrico.guiraud@cern.ch>
Date: Thu, 5 Jul 2018 23:13:35 +0200
Subject: [PATCH] [DF] Add a test for the PassAsVec RDF helper

---
 tree/dataframe/test/.gdb_history          |  0
 tree/dataframe/test/dataframe_helpers.cxx | 19 ++++++++++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)
 create mode 100644 tree/dataframe/test/.gdb_history

diff --git a/tree/dataframe/test/.gdb_history b/tree/dataframe/test/.gdb_history
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/tree/dataframe/test/dataframe_helpers.cxx b/tree/dataframe/test/dataframe_helpers.cxx
index 3b8fefc240e..e4af7372c89 100644
--- a/tree/dataframe/test/dataframe_helpers.cxx
+++ b/tree/dataframe/test/dataframe_helpers.cxx
@@ -1,10 +1,15 @@
 #include <ROOT/RDataFrame.hxx>
 #include <ROOT/RDFHelpers.hxx>
-#include "gtest/gtest.h"
+#include <ROOT/RVec.hxx>
+
 #include <algorithm>
+#include <deque>
 #include <vector>
+
+#include "gtest/gtest.h"
 using namespace ROOT;
 using namespace ROOT::RDF;
+using namespace ROOT::VecOps;
 
 struct TrueFunctor {
    bool operator()() const { return true; }
@@ -32,3 +37,15 @@ TEST(RDFHelpers, Not)
    EXPECT_EQ(1u, *RDataFrame(1).Filter(Not(Not(l))).Count());
 }
 
+TEST(RDFHelpers, PassAsVec)
+{
+   auto One = [] { return 1; };
+   auto df = RDataFrame(1).Define("one", One).Define("_1", One);
+
+   auto TwoOnes = [](const std::vector<int> &v) { return v.size() == 2 && v[0] == 1 && v[1] == 1; };
+   EXPECT_EQ(1u, *df.Filter(PassAsVec<2, int>(TwoOnes), {"one", "_1"}).Count());
+   auto TwoOnesRVec = [](const RVec<int> &v) { return v.size() == 2 && All(v == 1); };
+   EXPECT_EQ(1u, *df.Filter(PassAsVec<2, int>(TwoOnesRVec), {"one", "_1"}).Count());
+   auto TwoOnesDeque = [](const std::deque<int> &v) { return v.size() == 2 && v[0] == 1 && v[1] == 1; };
+   EXPECT_EQ(1u, *df.Filter(PassAsVec<2, int>(TwoOnesDeque), {"one", "_1"}).Count());
+}
-- 
GitLab