Pivot to simpler approach. Passes JSONTestSuite
This commit is contained in:
31
src/test.cpp
31
src/test.cpp
@@ -11,7 +11,7 @@
|
||||
#include <nanobench.h>
|
||||
#include <simdjson.h>
|
||||
|
||||
#include "parser.h"
|
||||
#include "parser3.h"
|
||||
|
||||
// This is the JSON grammar in McKeeman Form.
|
||||
|
||||
@@ -539,28 +539,35 @@ TEST_CASE("parser2") {
|
||||
MinifyState state;
|
||||
{
|
||||
auto copy = json;
|
||||
Parser2 parser(&c, &state);
|
||||
parser3::Parser3 parser(&c, &state);
|
||||
int i = 0;
|
||||
for (; i < copy.length() - 1; ++i) {
|
||||
REQUIRE(parser.parse(copy.data() + i, 1) == Parser2::S_AGAIN);
|
||||
REQUIRE(parser.parse(copy.data() + i, 1) == parser3::S_AGAIN);
|
||||
}
|
||||
CHECK(parser.parse(copy.data() + i, 1) == Parser2::S_AGAIN);
|
||||
CHECK(parser.parse(nullptr, 0) == Parser2::S_OK);
|
||||
CHECK(parser.parse(copy.data() + i, 1) == parser3::S_AGAIN);
|
||||
CHECK(parser.parse(nullptr, 0) == parser3::S_OK);
|
||||
puts("");
|
||||
}
|
||||
{
|
||||
std::string copy = "{\"x\": [], \"y\": {}}";
|
||||
Parser2 parser(&c, &state);
|
||||
CHECK(parser.parse(copy.data(), copy.length()) == Parser2::S_AGAIN);
|
||||
CHECK(parser.parse(nullptr, 0) == Parser2::S_OK);
|
||||
parser3::Parser3 parser(&c, &state);
|
||||
CHECK(parser.parse(copy.data(), copy.length()) == parser3::S_AGAIN);
|
||||
CHECK(parser.parse(nullptr, 0) == parser3::S_OK);
|
||||
puts("");
|
||||
}
|
||||
{
|
||||
auto c = noopCallbacks();
|
||||
std::string copy = "{\"a\":\"a";
|
||||
Parser2 parser(&c, &state);
|
||||
CHECK(parser.parse(copy.data(), copy.length()) == Parser2::S_AGAIN);
|
||||
CHECK(parser.parse(nullptr, 0) == Parser2::S_REJECT);
|
||||
parser3::Parser3 parser(&c, &state);
|
||||
CHECK(parser.parse(copy.data(), copy.length()) == parser3::S_AGAIN);
|
||||
CHECK(parser.parse(nullptr, 0) == parser3::S_REJECT);
|
||||
}
|
||||
{
|
||||
auto c = noopCallbacks();
|
||||
std::string copy = "[";
|
||||
parser3::Parser3 parser(&c, &state);
|
||||
CHECK(parser.parse(copy.data(), copy.length()) == parser3::S_AGAIN);
|
||||
CHECK(parser.parse(nullptr, 0) == parser3::S_REJECT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -583,7 +590,7 @@ TEST_CASE("bench2") {
|
||||
bench.unit("byte");
|
||||
bench.run("parser2", [&]() {
|
||||
auto copy = json;
|
||||
Parser2 parser(&c, nullptr);
|
||||
parser3::Parser3 parser(&c, nullptr);
|
||||
bench.doNotOptimizeAway(parser.parse(copy.data(), copy.length()));
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user