Test more strides

This commit is contained in:
2025-05-21 16:19:58 -04:00
parent 611d1a07de
commit 0b68fd1d41
2 changed files with 14 additions and 6 deletions

View File

@@ -9,12 +9,19 @@ std::pair<std::string, parser3::Status> runStreaming(std::string copy,
SerializeState state;
auto c = serializeCallbacks();
parser3::Parser3 parser(&c, &state);
for (int i = 0; i < copy.size(); i += stride) {
auto s =
parser.parse(copy.data() + i, std::min<int>(stride, copy.size() - i));
if (stride == 0) {
auto s = parser.parse(copy.data(), copy.size());
if (s != parser3::S_AGAIN) {
return {state.result, s};
}
} else {
for (int i = 0; i < copy.size(); i += stride) {
auto s =
parser.parse(copy.data() + i, std::min<int>(stride, copy.size() - i));
if (s != parser3::S_AGAIN) {
return {state.result, s};
}
}
}
auto s = parser.parse(nullptr, 0);
if (s != parser3::S_OK) {
@@ -105,7 +112,7 @@ void testStringRoundTrip(std::string_view s) {
}
for (int stride = 0; stride < 16; ++stride) {
auto escaped = "\"" + escapeAsJsonString(s) + "\"";
auto parsed = toValue(std::move(escaped));
auto parsed = toValue(escaped, stride);
if (!parsed.has_value()) {
abort();
}