update testcase for reader
This commit is contained in:
parent
9e0d70aa66
commit
ecc5ebbea0
@ -2653,16 +2653,193 @@ JSONTEST_FIXTURE_LOCAL(ReaderTest, parseWithNoErrors) {
|
||||
JSONTEST_ASSERT(reader.getStructuredErrors().empty());
|
||||
}
|
||||
|
||||
JSONTEST_FIXTURE_LOCAL(ReaderTest, parseObject) {
|
||||
Json::Reader reader;
|
||||
Json::Value root;
|
||||
{
|
||||
bool ok = reader.parse("{\"property\"}", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 12\n Missing ':' after object "
|
||||
"member name\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 11);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 12);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Missing ':' after object member name");
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("{\"property\" : \"value\" ", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 23\n Missing ',' or '}' in object "
|
||||
"declaration\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 22);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 22);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Missing ',' or '}' in object declaration");
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("{\"property\" : \"value\", ", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 24\n Missing '}' or object "
|
||||
"member name\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 23);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 23);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Missing '}' or object member name");
|
||||
}
|
||||
}
|
||||
|
||||
JSONTEST_FIXTURE_LOCAL(ReaderTest, parseArray) {
|
||||
Json::Reader reader;
|
||||
Json::Value root;
|
||||
{
|
||||
bool ok = reader.parse("[ \"value\" ", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 11\n Missing ',' or ']' in array "
|
||||
"declaration\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 10);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 10);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Missing ',' or ']' in array declaration");
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("[ \"value1\" \"value2\" ] ", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 12\n Missing ',' or ']' in array "
|
||||
"declaration\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 11);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 19);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Missing ',' or ']' in array declaration");
|
||||
}
|
||||
}
|
||||
|
||||
JSONTEST_FIXTURE_LOCAL(ReaderTest, parseString) {
|
||||
Json::Reader reader;
|
||||
Json::Value root;
|
||||
{
|
||||
bool ok = reader.parse("[ \"\\u8A2a\" ]", root);
|
||||
JSONTEST_ASSERT(ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages().empty());
|
||||
JSONTEST_ASSERT(reader.getStructuredErrors().empty());
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("[ \"\\uD801\" ]", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 3\n"
|
||||
" additional six characters expected to "
|
||||
"parse unicode surrogate pair.\n"
|
||||
"See Line 1, Column 10 for detail.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 2);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 10);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"additional six characters expected to "
|
||||
"parse unicode surrogate pair.");
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("[ \"\\uD801\\d1234\" ]", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 3\n"
|
||||
" expecting another \\u token to begin the "
|
||||
"second half of a unicode surrogate pair\n"
|
||||
"See Line 1, Column 12 for detail.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 2);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 16);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"expecting another \\u token to begin the "
|
||||
"second half of a unicode surrogate pair");
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("[ \"\\ua3t@\" ]", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 3\n"
|
||||
" Bad unicode escape sequence in string: "
|
||||
"hexadecimal digit expected.\n"
|
||||
"See Line 1, Column 9 for detail.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 2);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 10);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Bad unicode escape sequence in string: "
|
||||
"hexadecimal digit expected.");
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("[ \"\\ua3t\" ]", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(
|
||||
reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 3\n"
|
||||
" Bad unicode escape sequence in string: four digits expected.\n"
|
||||
"See Line 1, Column 6 for detail.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 2);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 9);
|
||||
JSONTEST_ASSERT(
|
||||
errors.at(0).message ==
|
||||
"Bad unicode escape sequence in string: four digits expected.");
|
||||
}
|
||||
}
|
||||
|
||||
JSONTEST_FIXTURE_LOCAL(ReaderTest, parseComment) {
|
||||
Json::Reader reader;
|
||||
Json::Value root;
|
||||
bool ok = reader.parse("{ /*commentBeforeValue*/"
|
||||
" \"property\" : \"value\" }"
|
||||
"//commentAfterValue\n",
|
||||
root);
|
||||
JSONTEST_ASSERT(ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages().empty());
|
||||
JSONTEST_ASSERT(reader.getStructuredErrors().empty());
|
||||
{
|
||||
bool ok = reader.parse("{ /*commentBeforeValue*/"
|
||||
" \"property\" : \"value\" }"
|
||||
"//commentAfterValue\n",
|
||||
root);
|
||||
JSONTEST_ASSERT(ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages().empty());
|
||||
JSONTEST_ASSERT(reader.getStructuredErrors().empty());
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("{ \"property\" : \"value\" } "
|
||||
"//trailing\n//comment\n",
|
||||
root);
|
||||
JSONTEST_ASSERT(ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages().empty());
|
||||
JSONTEST_ASSERT(reader.getStructuredErrors().empty());
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse(" true //comment1\n//comment2\r"
|
||||
"//comment3\r\n",
|
||||
root);
|
||||
JSONTEST_ASSERT(ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages().empty());
|
||||
JSONTEST_ASSERT(reader.getStructuredErrors().empty());
|
||||
}
|
||||
}
|
||||
|
||||
JSONTEST_FIXTURE_LOCAL(ReaderTest, streamParseWithNoErrors) {
|
||||
@ -2709,18 +2886,71 @@ JSONTEST_FIXTURE_LOCAL(ReaderTest, parseWithNoErrorsTestingOffsets) {
|
||||
JSONTEST_FIXTURE_LOCAL(ReaderTest, parseWithOneError) {
|
||||
Json::Reader reader;
|
||||
Json::Value root;
|
||||
bool ok = reader.parse("{ \"property\" :: \"value\" }", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 15\n Syntax error: value, object or array "
|
||||
"expected.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 14);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 15);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Syntax error: value, object or array expected.");
|
||||
{
|
||||
bool ok = reader.parse("{ \"property\" :: \"value\" }", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(
|
||||
reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 15\n Syntax error: value, object or array "
|
||||
"expected.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 14);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 15);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Syntax error: value, object or array expected.");
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("s", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(
|
||||
reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 1\n Syntax error: value, object or array "
|
||||
"expected.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 0);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Syntax error: value, object or array expected.");
|
||||
}
|
||||
}
|
||||
|
||||
JSONTEST_FIXTURE_LOCAL(ReaderTest, parseSpecialFloat) {
|
||||
Json::Reader reader;
|
||||
Json::Value root;
|
||||
{
|
||||
bool ok = reader.parse("{ \"a\" : Infi }", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(
|
||||
reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 9\n Syntax error: value, object or array "
|
||||
"expected.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 8);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 9);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Syntax error: value, object or array expected.");
|
||||
}
|
||||
{
|
||||
bool ok = reader.parse("{ \"a\" : Infiniaa }", root);
|
||||
JSONTEST_ASSERT(!ok);
|
||||
JSONTEST_ASSERT(
|
||||
reader.getFormattedErrorMessages() ==
|
||||
"* Line 1, Column 9\n Syntax error: value, object or array "
|
||||
"expected.\n");
|
||||
std::vector<Json::Reader::StructuredError> errors =
|
||||
reader.getStructuredErrors();
|
||||
JSONTEST_ASSERT(errors.size() == 1);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_start == 8);
|
||||
JSONTEST_ASSERT(errors.at(0).offset_limit == 9);
|
||||
JSONTEST_ASSERT(errors.at(0).message ==
|
||||
"Syntax error: value, object or array expected.");
|
||||
}
|
||||
}
|
||||
|
||||
JSONTEST_FIXTURE_LOCAL(ReaderTest, strictModeParseNumber) {
|
||||
|
Loading…
Reference in New Issue
Block a user