Skip to content

Commit 89b72e1

Browse files
committed
test stackLimit
1 parent 2474989 commit 89b72e1

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/test_lib_json/main.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1713,6 +1713,34 @@ JSONTEST_FIXTURE(CharReaderTest, parseWithDetailError) {
17131713
delete reader;
17141714
}
17151715

1716+
JSONTEST_FIXTURE(CharReaderTest, parseWithStackLimit) {
1717+
Json::CharReaderBuilder b;
1718+
Json::Value root;
1719+
char const doc[] =
1720+
"{ \"property\" : \"value\" }";
1721+
{
1722+
b.settings_["stackLimit"] = 2;
1723+
Json::CharReader* reader(b.newCharReader());
1724+
std::string errs;
1725+
bool ok = reader->parse(
1726+
doc, doc + std::strlen(doc),
1727+
&root, &errs);
1728+
JSONTEST_ASSERT(ok);
1729+
JSONTEST_ASSERT(errs == "");
1730+
JSONTEST_ASSERT_EQUAL("value", root["property"]);
1731+
delete reader;
1732+
}
1733+
{
1734+
b.settings_["stackLimit"] = 1;
1735+
Json::CharReader* reader(b.newCharReader());
1736+
std::string errs;
1737+
JSONTEST_ASSERT_THROWS(reader->parse(
1738+
doc, doc + std::strlen(doc),
1739+
&root, &errs));
1740+
delete reader;
1741+
}
1742+
}
1743+
17161744
int main(int argc, const char* argv[]) {
17171745
JsonTest::Runner runner;
17181746
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, checkNormalizeFloatingPointStr);
@@ -1749,6 +1777,7 @@ int main(int argc, const char* argv[]) {
17491777
JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseWithOneError);
17501778
JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseChineseWithOneError);
17511779
JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseWithDetailError);
1780+
JSONTEST_REGISTER_FIXTURE(runner, CharReaderTest, parseWithStackLimit);
17521781

17531782
JSONTEST_REGISTER_FIXTURE(runner, WriterTest, dropNullPlaceholders);
17541783
JSONTEST_REGISTER_FIXTURE(runner, StreamWriterTest, dropNullPlaceholders);

0 commit comments

Comments
 (0)