@@ -91,18 +91,15 @@ SEASTAR_TEST_CASE(test_jsonable) {
91
91
return make_ready_future ();
92
92
}
93
93
94
- SEASTAR_THREAD_TEST_CASE (test_stream_range_as_array) {
94
+ template <typename F>
95
+ void formatter_check_expected (sstring expected, F f, bool close = true ) {
95
96
auto vec = std::vector<net::packet>{};
96
97
auto out = output_stream<char >(data_sink (std::make_unique<vector_data_sink>(vec)), 8 );
97
98
98
- auto mapper = stream_range_as_array (std::vector<int >{1 ,2 ,3 }, [] (auto i) {
99
- object_json obj;
100
- obj.subject = std::to_string (i);
101
- obj.values .push (i);
102
- return obj;
103
- });
104
-
105
- mapper (std::move (out)).get ();
99
+ f (out);
100
+ if (close ) {
101
+ out.close ().get ();
102
+ }
106
103
107
104
auto packets = net::packet{};
108
105
for (auto &p : vec) {
@@ -112,6 +109,53 @@ SEASTAR_THREAD_TEST_CASE(test_stream_range_as_array) {
112
109
auto buf = packets.release ();
113
110
114
111
sstring result (buf.front ().get (), buf.front ().size ());
115
- sstring expected = " [{\" subject\" :\" 1\" ,\" values\" :[1]}, {\" subject\" :\" 2\" ,\" values\" :[2]}, {\" subject\" :\" 3\" ,\" values\" :[3]}]" ;
116
112
BOOST_CHECK_EQUAL (expected, result);
117
113
}
114
+
115
+
116
+ SEASTAR_THREAD_TEST_CASE (test_stream_range_as_array) {
117
+ sstring expected = R"( [{"subject":"1","values":[1]}, {"subject":"2","values":[2]}, {"subject":"3","values":[3]}])" ;
118
+ formatter_check_expected (expected, [] (auto & out) {
119
+ auto mapper = stream_range_as_array (std::vector<int >{1 ,2 ,3 }, [] (auto i) {
120
+ object_json obj;
121
+ obj.subject = std::to_string (i);
122
+ obj.values .push (i);
123
+ return obj;
124
+ });
125
+
126
+ mapper (std::move (out)).get ();
127
+ }, false );
128
+ }
129
+
130
+ SEASTAR_THREAD_TEST_CASE (formatter_write) {
131
+
132
+ formatter_check_expected (" 3" , [] (auto &out) {
133
+ json::formatter::write (out, 3 ).get ();
134
+ });
135
+ formatter_check_expected (" false" , [] (auto &out) {
136
+ json::formatter::write (out, false ).get ();
137
+ });
138
+ formatter_check_expected (" \" foo\" " , [] (auto &out) {
139
+ json::formatter::write (out, " foo" ).get ();
140
+ });
141
+
142
+ formatter_check_expected (" {1:2,3:4}" , [] (auto & out) {
143
+ json::formatter::write (out, std::map<int , int >({{1 , 2 }, {3 , 4 }})).get ();
144
+ });
145
+ formatter_check_expected (" {3:4,1:2}" , [] (auto & out) {
146
+ json::formatter::write (out, std::unordered_map<int , int >({{1 , 2 }, {3 , 4 }})).get ();
147
+ });
148
+ formatter_check_expected (" [1,2,3,4]" , [] (auto &out) {
149
+ json::formatter::write (out, std::vector<int >({1 , 2 , 3 , 4 })).get ();
150
+ });
151
+
152
+ formatter_check_expected (" [{1:2},{3:4}]" , [] (auto &out) {
153
+ json::formatter::write (out, std::vector<std::pair<int , int >>({{1 , 2 }, {3 , 4 }})).get ();
154
+ });
155
+ formatter_check_expected (" [{1:2},{3:4}]" , [] (auto &out) {
156
+ json::formatter::write (out, std::vector<std::map<int , int >>({{{1 , 2 }}, {{3 , 4 }}})).get ();
157
+ });
158
+ formatter_check_expected (" [[1,2],[3,4]]" , [] (auto &out) {
159
+ json::formatter::write (out, std::vector<std::vector<int >>({{1 , 2 }, {3 , 4 }})).get ();
160
+ });
161
+ }
0 commit comments