@@ -1884,6 +1884,29 @@ JSONTEST_FIXTURE(CharReaderTest, parseWithStackLimit) {
1884
1884
}
1885
1885
}
1886
1886
1887
+ struct CharReaderStrictModeTest : JsonTest::TestCase {};
1888
+
1889
+ JSONTEST_FIXTURE (CharReaderStrictModeTest, dupKeys) {
1890
+ Json::CharReaderBuilder b;
1891
+ Json::Value root;
1892
+ char const doc[] =
1893
+ " { \" property\" : \" value\" , \" key\" : \" val1\" , \" key\" : \" val2\" }" ;
1894
+ {
1895
+ b.strictMode (&b.settings_ );
1896
+ Json::CharReader* reader (b.newCharReader ());
1897
+ std::string errs;
1898
+ bool ok = reader->parse (
1899
+ doc, doc + std::strlen (doc),
1900
+ &root, &errs);
1901
+ JSONTEST_ASSERT (!ok);
1902
+ JSONTEST_ASSERT_STRING_EQUAL (
1903
+ " * Line 1, Column 41\n "
1904
+ " Duplicate key: 'key'\n " ,
1905
+ errs);
1906
+ JSONTEST_ASSERT_EQUAL (" val1" , root[" key" ]); // so far
1907
+ delete reader;
1908
+ }
1909
+ }
1887
1910
struct CharReaderFailIfExtraTest : JsonTest::TestCase {};
1888
1911
1889
1912
JSONTEST_FIXTURE (CharReaderFailIfExtraTest, issue164) {
@@ -2305,6 +2328,8 @@ int main(int argc, const char* argv[]) {
2305
2328
JSONTEST_REGISTER_FIXTURE (runner, CharReaderTest, parseWithDetailError);
2306
2329
JSONTEST_REGISTER_FIXTURE (runner, CharReaderTest, parseWithStackLimit);
2307
2330
2331
+ JSONTEST_REGISTER_FIXTURE (runner, CharReaderStrictModeTest, dupKeys);
2332
+
2308
2333
JSONTEST_REGISTER_FIXTURE (runner, CharReaderFailIfExtraTest, issue164);
2309
2334
JSONTEST_REGISTER_FIXTURE (runner, CharReaderFailIfExtraTest, issue107);
2310
2335
JSONTEST_REGISTER_FIXTURE (runner, CharReaderFailIfExtraTest, commentAfterObject);
0 commit comments