Simplify fuzz test
This commit is contained in:
68
src/fuzz.cpp
68
src/fuzz.cpp
@@ -1,46 +1,42 @@
|
|||||||
#include "minify.h"
|
#include "minify.h"
|
||||||
#include "parser3.h"
|
#include "parser3.h"
|
||||||
|
|
||||||
void testStreaming(std::string const &json) {
|
std::pair<std::string, parser3::Status> runStreaming(std::string copy) {
|
||||||
MinifyState streaming;
|
MinifyState state;
|
||||||
MinifyState batch;
|
|
||||||
auto c = minifyCallbacks();
|
auto c = minifyCallbacks();
|
||||||
parser3::Status streamingStatus = parser3::S_OK;
|
parser3::Parser3 parser(&c, &state);
|
||||||
parser3::Status batchStatus = parser3::S_OK;
|
for (int i = 0; i < copy.size(); ++i) {
|
||||||
do {
|
auto s = parser.parse(copy.data() + i, 1);
|
||||||
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());
|
|
||||||
if (s != parser3::S_AGAIN) {
|
if (s != parser3::S_AGAIN) {
|
||||||
batchStatus = s;
|
return {state.result, s};
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
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<std::string, parser3::Status> 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();
|
abort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user