Commit 51771873 authored by Tom Jackson's avatar Tom Jackson Committed by Sara Golemon

Making from(dynamic.items()) work

Summary: It was broken because the `dynamic`'s iterator wasn't complete.

Test Plan: Unit test

Reviewed By: jbrewer@fb.com

FB internal diff: D793618
parent c5a492c0
......@@ -325,6 +325,7 @@ inline dynamic::const_iterator dynamic::end() const {
template <class It>
struct dynamic::IterableProxy {
typedef It const_iterator;
typedef typename It::value_type value_type;
/* implicit */ IterableProxy(const dynamic::ObjectImpl* o) : o_(o) { }
......
......@@ -299,7 +299,7 @@ From from(std::initializer_list<Value> source) {
template<class Container,
class From = detail::CopiedSource<typename Container::value_type,
Container>>
Container>>
From from(Container&& source) {
return From(std::move(source));
}
......
......@@ -664,6 +664,14 @@ TEST(Gen, Dynamic) {
EXPECT_EQ(dynamic(5), from(array3) | rconcat | rconcat | sum);
}
TEST(Gen, DynamicObject) {
const dynamic obj = dynamic::object(1, 2)(3, 4);
EXPECT_EQ(dynamic(4), from(obj.keys()) | sum);
EXPECT_EQ(dynamic(6), from(obj.values()) | sum);
EXPECT_EQ(dynamic(4), from(obj.items()) | get<0>() | sum);
EXPECT_EQ(dynamic(6), from(obj.items()) | get<1>() | sum);
}
TEST(StringGen, EmptySplit) {
auto collect = eachTo<std::string>() | as<vector>();
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment