MCPcopy Create free account
hub / github.com/boostorg/json / grind

Method grind

test/serializer.cpp:157–222  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

155
156 template<class T>
157 void
158 grind(
159 string_view s0,
160 T const& t,
161 string_view name = {})
162 {
163 grind_one(s0, t, name);
164
165 auto const s1 = serialize(t);
166 for(std::size_t i = 1;
167 i < s1.size(); ++i)
168 {
169 serializer sr;
170 sr.reset(&t);
171 string s2;
172 s2.reserve(s1.size());
173 s2.grow(sr.read(
174 s2.data(), i).size());
175 auto const dump =
176 [&]
177 {
178 if(name.empty())
179 log <<
180 " " << s0 << "\n"
181 " " << s1 << "\n"
182 " " << s2 << std::endl;
183 else
184 log << name << ":\n"
185 " " << s0 << "\n"
186 " " << s1 << "\n"
187 " " << s2 << std::endl;
188 };
189 if(! BOOST_TEST(
190 s2.size() == i))
191 {
192 dump();
193 break;
194 }
195 s2.grow(sr.read(
196 s2.data() + i,
197 s1.size() - i).size());
198 if(! BOOST_TEST(
199 s2.size() == s1.size()))
200 {
201 dump();
202 break;
203 }
204 if(! BOOST_TEST(s2 == s1))
205 {
206 dump();
207 break;
208 }
209 }
210 {
211 string s2;
212 s2.reserve( s1.size() );
213 serializer sr;
214 sr.reset(&t);

Callers

nothing calls this directly

Calls 8

serializeFunction · 0.85
sizeMethod · 0.45
resetMethod · 0.45
reserveMethod · 0.45
growMethod · 0.45
readMethod · 0.45
dataMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected