27 using namespace folly;
34 auto even = [](
int i) ->
bool {
return i % 2 == 0; };
35 auto odd = [](
int i) ->
bool {
return i % 2 == 1; };
37 TEST(CombineGen, Interleave) {
41 auto interleaved = base |
interleave(toInterleave | as<vector>());
42 EXPECT_EQ(interleaved | as<vector>(), vector<int>({1, 2, 3, 4, 5, 6}));
47 auto interleaved = base |
interleave(toInterleave | as<vector>());
48 EXPECT_EQ(interleaved | as<vector>(), vector<int>({1, 2, 3, 4, 5, 6}));
57 auto combined = base0 |
zip(zippee) | as<vector>();
60 EXPECT_EQ(std::get<1>(combined[0]),
"one");
62 EXPECT_EQ(std::get<1>(combined[1]),
"two");
64 EXPECT_EQ(std::get<1>(combined[2]),
"three");
70 auto combined = base0 |
zip(
std::move(zippee)) | as<vector>();
77 auto baseFinite =
seq(1) |
take(1);
79 baseFinite |
zip(vector<string>{
"one",
"two",
"three"}) | as<vector>();
82 EXPECT_EQ(std::get<1>(combined[0]),
"one");
86 TEST(CombineGen, TupleFlatten) {
87 vector<tuple<int, string>> intStringTupleVec{
88 tuple<int, string>{1,
"1"},
89 tuple<int, string>{2,
"2"},
90 tuple<int, string>{3,
"3"},
93 vector<tuple<char>> charTupleVec{
100 vector<double> doubleVec{
109 auto zipped1 =
from(intStringTupleVec)
111 | assert_type<tuple<tuple<int, string>, tuple<char>>>()
118 auto zipped2 =
from(zipped1)
120 | assert_type<tuple<int, string, char>&&>()
127 auto zipped3 =
from(charTupleVec)
128 |
zip(intStringTupleVec)
130 | assert_type<tuple<char, int, string>&&>()
137 auto zipped4 =
from(intStringTupleVec)
140 | assert_type<tuple<int, string, double>&&>()
147 auto zipped5 =
from(doubleVec)
149 | assert_type<tuple<double, double>>()
158 auto zipped6 =
from(intStringTupleVec)
163 | assert_type<tuple<int, string, char, double>&&>()
172 gflags::ParseCommandLineFlags(&argc, &argv,
true);
#define ASSERT_EQ(val1, val2)
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
From from(Container &source)
#define EXPECT_EQ(val1, val2)
constexpr detail::Map< Move > move
Gen seq(Value first, Value last)
—— Concurrent Priority Queue Implementation ——
const folly::gen::detail::Map< folly::gen::detail::MergeTuples > gTupleFlatten
Interleave interleave(Source2 &&source2)
int main(int argc, char *argv[])
Filter filter(Predicate pred=Predicate())
#define EXPECT_TRUE(condition)
detail::Take take(Number count)
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
#define ASSERT_FALSE(condition)
#define EXPECT_FALSE(condition)
detail::TypeAssertion< Value > assert_type()