1515// specific language governing permissions and limitations
1616// under the License.
1717
18+ #include " arrow/ipc/json-internal.h"
19+
1820#include < cstdint>
1921#include < cstdio>
2022#include < cstring>
23+ #include < iostream>
2124#include < memory>
2225#include < string>
2326#include < vector>
2427
28+ #include " rapidjson/document.h"
29+ #include " rapidjson/filewritestream.h"
30+ #include " rapidjson/prettywriter.h"
2531#include " gtest/gtest.h"
2632
27- #include " arrow/io/memory.h"
28- #include " arrow/io/test-common.h"
2933#include " arrow/ipc/adapter.h"
30- #include " arrow/ipc/file.h"
31- #include " arrow/ipc/test-common.h"
32- #include " arrow/ipc/util.h"
33-
3434#include " arrow/test-util.h"
35- #include " arrow/types/list.h"
36- #include " arrow/types/primitive.h"
37- #include " arrow/types/string.h"
38- #include " arrow/types/struct.h"
39- #include " arrow/util/bit-util.h"
40- #include " arrow/util/buffer.h"
4135#include " arrow/util/memory-pool.h"
4236#include " arrow/util/status.h"
4337
@@ -50,10 +44,33 @@ class TestJsonSchemaWriter : public ::testing::Test {
5044 void TearDown () {}
5145
5246 void TestRoundTrip (const Schema& schema) {
47+ rj::StringBuffer sb;
48+ rj::Writer<rj::StringBuffer> writer (sb);
49+
50+ ASSERT_OK (WriteJsonSchema (schema, &writer));
5351
52+ rj::Document d;
53+ d.Parse (sb.GetString ());
5454
55+ std::shared_ptr<Schema> out;
56+ ASSERT_OK (ReadJsonSchema (d, &out));
57+
58+ ASSERT_TRUE (schema.Equals (out));
5559 }
5660};
5761
62+ TEST_F (TestJsonSchemaWriter, FlatTypes) {
63+ std::vector<std::shared_ptr<Field>> fields = {
64+ field (" f0" , int8 ()), field (" f1" , int16 (), false ), field (" f2" , int32 ()),
65+ field (" f3" , int64 (), false ), field (" f4" , uint8 ()), field (" f5" , uint16 ()),
66+ field (" f6" , uint32 ()), field (" f7" , uint64 ()), field (" f8" , float32 ()),
67+ field (" f9" , float64 ()), field (" f10" , utf8 ()), field (" f11" , binary ()),
68+ field (" f12" , list (int32 ())), field (" f13" , struct_ ({field (" s1" , int32 ()),
69+ field (" s2" , utf8 ())}))};
70+
71+ Schema schema (fields);
72+ TestRoundTrip (schema);
73+ }
74+
5875} // namespace ipc
5976} // namespace arrow
0 commit comments