From 32b43e71daf5b82ed77fd46cca44036e2e20776c Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Sun, 18 May 2025 14:14:45 -0400 Subject: [PATCH] Simplify fuzz test --- src/fuzz.cpp | 68 +++++++++++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/src/fuzz.cpp b/src/fuzz.cpp index f3282dd..762bb66 100644 --- a/src/fuzz.cpp +++ b/src/fuzz.cpp @@ -1,46 +1,42 @@ #include "minify.h" #include "parser3.h" -void testStreaming(std::string const &json) { - MinifyState streaming; - MinifyState batch; +std::pair runStreaming(std::string copy) { + MinifyState state; auto c = minifyCallbacks(); - parser3::Status streamingStatus = parser3::S_OK; - parser3::Status batchStatus = parser3::S_OK; - do { - auto copy = json; - parser3::Parser3 parser(&c, &streaming); - for (int i = 0; i < copy.size(); ++i) { - auto s = parser.parse(copy.data() + i, 1); - if (s != parser3::S_AGAIN) { - streamingStatus = s; - break; - } - } - auto s = parser.parse(nullptr, 0); - if (s != parser3::S_OK) { - streamingStatus = s; - break; - } - } while (0); - do { - auto copy = json; - parser3::Parser3 parser(&c, &batch); - auto s = parser.parse(copy.data(), copy.size()); + parser3::Parser3 parser(&c, &state); + for (int i = 0; i < copy.size(); ++i) { + auto s = parser.parse(copy.data() + i, 1); if (s != parser3::S_AGAIN) { - batchStatus = s; - break; + return {state.result, s}; } - s = parser.parse(nullptr, 0); - if (s != parser3::S_OK) { - batchStatus = s; - break; - } - } while (0); - if (streamingStatus != batchStatus) { - abort(); } - if (streaming.result != batch.result) { + auto s = parser.parse(nullptr, 0); + if (s != parser3::S_OK) { + return {state.result, s}; + } + return {state.result, parser3::S_OK}; +} + +std::pair runBatch(std::string copy) { + MinifyState state; + auto c = minifyCallbacks(); + parser3::Parser3 parser(&c, &state); + auto s = parser.parse(copy.data(), copy.size()); + if (s != parser3::S_AGAIN) { + return {state.result, s}; + } + s = parser.parse(nullptr, 0); + if (s != parser3::S_OK) { + return {state.result, s}; + } + return {state.result, parser3::S_OK}; +} + +void testStreaming(std::string const &json) { + auto result1 = runStreaming(json); + auto result2 = runBatch(json); + if (result1 != result2) { abort(); } }