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 { ...@@ -325,6 +325,7 @@ inline dynamic::const_iterator dynamic::end() const {
template <class It> template <class It>
struct dynamic::IterableProxy { struct dynamic::IterableProxy {
typedef It const_iterator; typedef It const_iterator;
typedef typename It::value_type value_type;
/* implicit */ IterableProxy(const dynamic::ObjectImpl* o) : o_(o) { } /* implicit */ IterableProxy(const dynamic::ObjectImpl* o) : o_(o) { }
......
...@@ -299,7 +299,7 @@ From from(std::initializer_list<Value> source) { ...@@ -299,7 +299,7 @@ From from(std::initializer_list<Value> source) {
template<class Container, template<class Container,
class From = detail::CopiedSource<typename Container::value_type, class From = detail::CopiedSource<typename Container::value_type,
Container>> Container>>
From from(Container&& source) { From from(Container&& source) {
return From(std::move(source)); return From(std::move(source));
} }
......
...@@ -664,6 +664,14 @@ TEST(Gen, Dynamic) { ...@@ -664,6 +664,14 @@ TEST(Gen, Dynamic) {
EXPECT_EQ(dynamic(5), from(array3) | rconcat | rconcat | sum); 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) { TEST(StringGen, EmptySplit) {
auto collect = eachTo<std::string>() | as<vector>(); 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