| 746 | } |
| 747 | |
| 748 | void TestArrayRoundTrip(const Array& array) { |
| 749 | static std::string name = "dummy"; |
| 750 | |
| 751 | rj::StringBuffer sb; |
| 752 | rj::Writer<rj::StringBuffer> writer(sb); |
| 753 | |
| 754 | ASSERT_OK(json::WriteArray(name, array, &writer)); |
| 755 | |
| 756 | std::string array_as_json = sb.GetString(); |
| 757 | |
| 758 | rj::Document d; |
| 759 | // Pass explicit size to avoid ASAN issues with |
| 760 | // SIMD loads in RapidJson. |
| 761 | d.Parse(array_as_json.data(), array_as_json.size()); |
| 762 | if (d.HasParseError()) { |
| 763 | FAIL() << "JSON parsing failed"; |
| 764 | } |
| 765 | |
| 766 | ASSERT_OK_AND_ASSIGN( |
| 767 | auto result_array, |
| 768 | json::ReadArray(default_memory_pool(), d, ::arrow::field(name, array.type()))); |
| 769 | ASSERT_OK(result_array->ValidateFull()); |
| 770 | |
| 771 | // std::cout << array_as_json << std::endl; |
| 772 | CompareArraysDetailed(0, *result_array, array); |
| 773 | } |
| 774 | |
| 775 | template <typename T, typename ValueType> |
| 776 | void CheckPrimitive(const std::shared_ptr<DataType>& type, |
no test coverage detected