mirror of
https://github.com/simdjson/simdjson
synced 2026-06-08 17:27:07 +00:00
49 lines
1.3 KiB
C++
49 lines
1.3 KiB
C++
#include "simdjson.h"
|
|
#include "test_ondemand.h"
|
|
|
|
using namespace simdjson;
|
|
|
|
namespace key_string_tests {
|
|
#if SIMDJSON_EXCEPTIONS
|
|
bool parser_key_value() {
|
|
TEST_START();
|
|
ondemand::parser parser;
|
|
const padded_string json = R"({ "1": "1", "2": "2", "3": "3", "abc": "abc", "\u0075": "\u0075" })"_padded;
|
|
auto doc = parser.iterate(json);
|
|
for(auto field : doc.get_object()) {
|
|
std::string_view keyv = field.unescaped_key();
|
|
std::string_view valuev = field.value();
|
|
if(keyv != valuev) { return false; }
|
|
}
|
|
return true;
|
|
}
|
|
|
|
bool parser_escaped_key() {
|
|
TEST_START();
|
|
ondemand::parser parser;
|
|
const padded_string json = "{ \"1\": \"1\", \"2\" : \"2\", \"3\" \t : \"3\", \"abc\"\n\t\n: \"abc\", \"\\u0075\": \"\\\\u0075\" }"_padded;
|
|
auto doc = parser.iterate(json);
|
|
for(auto field : doc.get_object()) {
|
|
std::string_view keyv = field.escaped_key();
|
|
std::string_view valuev = field.value();
|
|
if(keyv != valuev) { return false; }
|
|
}
|
|
return true;
|
|
}
|
|
|
|
#endif // SIMDJSON_EXCEPTIONS
|
|
bool run() {
|
|
return
|
|
#if SIMDJSON_EXCEPTIONS
|
|
parser_key_value() &&
|
|
parser_escaped_key() &&
|
|
#endif // SIMDJSON_EXCEPTIONS
|
|
true;
|
|
}
|
|
|
|
} // namespace key_string_tests
|
|
|
|
int main(int argc, char *argv[]) {
|
|
return test_main(argc, argv, key_string_tests::run);
|
|
}
|