Commit f8e187f6 authored by Marcus Holland-Moritz's avatar Marcus Holland-Moritz Committed by Dave Watson

Make sure folly::dynamic arrays can be used with folly::gen

Summary:
Define a value_type for folly::dynamic to make arrays work with
folly::gen::from.

Test Plan:
- added new unit test
- fbconfig folly/test && fbmake runtests

Reviewed By: tjackson@fb.com

FB internal diff: D1216358
parent 843b72c0
...@@ -110,6 +110,7 @@ private: ...@@ -110,6 +110,7 @@ private:
typedef std::vector<dynamic> Array; typedef std::vector<dynamic> Array;
public: public:
typedef Array::const_iterator const_iterator; typedef Array::const_iterator const_iterator;
typedef dynamic value_type;
struct const_key_iterator; struct const_key_iterator;
struct const_value_iterator; struct const_value_iterator;
struct const_item_iterator; struct const_item_iterator;
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include "folly/Benchmark.h" #include "folly/Benchmark.h"
#include "folly/dynamic.h" #include "folly/dynamic.h"
#include "folly/gen/Base.h"
#include "folly/json.h" #include "folly/json.h"
using folly::dynamic; using folly::dynamic;
...@@ -305,6 +306,13 @@ TEST(Dynamic, GetPtr) { ...@@ -305,6 +306,13 @@ TEST(Dynamic, GetPtr) {
EXPECT_EQ(dynamic(2), *cobject.get_ptr("two")); EXPECT_EQ(dynamic(2), *cobject.get_ptr("two"));
} }
TEST(Dynamic, ArrayGenerator) {
// Make sure arrays can be used with folly::gen.
using namespace folly::gen;
dynamic arr { 1, 2, 3, 4 };
EXPECT_EQ(from(arr) | take(3) | member(&dynamic::asInt) | sum, 6);
}
int main(int argc, char** argv) { int main(int argc, char** argv) {
testing::InitGoogleTest(&argc, argv); testing::InitGoogleTest(&argc, argv);
google::ParseCommandLineFlags(&argc, &argv, true); google::ParseCommandLineFlags(&argc, &argv, true);
......
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