| 78 | ::test_suite::log_type log; |
| 79 | |
| 80 | void |
| 81 | grind_one( |
| 82 | string_view s, |
| 83 | value const& jv, |
| 84 | string_view name = {}) |
| 85 | { |
| 86 | { |
| 87 | system::error_code ec; |
| 88 | auto const s1 = serialize(jv); |
| 89 | auto const jv2 = parse(s1, ec); |
| 90 | if(! BOOST_TEST(equal(jv, jv2))) |
| 91 | { |
| 92 | if(name.empty()) |
| 93 | log << |
| 94 | " " << s << "\n" |
| 95 | " " << s1 << |
| 96 | std::endl; |
| 97 | else |
| 98 | log << name << ":\n" |
| 99 | " " << s << "\n" |
| 100 | " " << s1 << |
| 101 | std::endl; |
| 102 | } |
| 103 | } |
| 104 | |
| 105 | // large buffer |
| 106 | { |
| 107 | system::error_code ec; |
| 108 | serializer sr; |
| 109 | sr.reset(&jv); |
| 110 | string js; |
| 111 | js.reserve(4096); |
| 112 | js.grow(sr.read( |
| 113 | js.data(), js.capacity()).size()); |
| 114 | |
| 115 | auto const s1 = serialize(jv); |
| 116 | auto const jv2 = parse(s1, ec); |
| 117 | BOOST_TEST(equal(jv, jv2)); |
| 118 | } |
| 119 | } |
| 120 | |
| 121 | template<class T> |
| 122 | void |