@@ -1414,18 +1414,70 @@ void ValueTest::checkIsEqual(const Json::Value &x, const Json::Value &y) {
14141414 JSONTEST_ASSERT (y.compare (x) == 0 );
14151415}
14161416
1417- JSONTEST_FIXTURE (ValueTest, checkInteger ) {
1417+ JSONTEST_FIXTURE (ValueTest, typeChecksThrowExceptions ) {
14181418#if JSON_USE_EXCEPTION
1419- try {
1420- Json::Value x = 1 ;
1421- x[" key" ]; // SIGABRT?
1422- // regression for https://sourceforge.net/p/jsoncpp/bugs/67/
1423- JSONTEST_ASSERT (0 );
1424- }
1425- catch (std::runtime_error const &) {
1426- JSONTEST_ASSERT (1 ); // good
1427- }
1428- #endif // JSON_USE_EXCEPTION
1419+
1420+ Json::Value intVal (1 );
1421+ Json::Value strVal (" Test" );
1422+ Json::Value objVal (Json::objectValue);
1423+ Json::Value arrVal (Json::arrayValue);
1424+
1425+ JSONTEST_ASSERT_THROWS (intVal[" test" ]);
1426+ JSONTEST_ASSERT_THROWS (strVal[" test" ]);
1427+ JSONTEST_ASSERT_THROWS (arrVal[" test" ]);
1428+
1429+ JSONTEST_ASSERT_THROWS (intVal.removeMember (" test" ));
1430+ JSONTEST_ASSERT_THROWS (strVal.removeMember (" test" ));
1431+ JSONTEST_ASSERT_THROWS (arrVal.removeMember (" test" ));
1432+
1433+ JSONTEST_ASSERT_THROWS (intVal.getMemberNames ());
1434+ JSONTEST_ASSERT_THROWS (strVal.getMemberNames ());
1435+ JSONTEST_ASSERT_THROWS (arrVal.getMemberNames ());
1436+
1437+ JSONTEST_ASSERT_THROWS (intVal[0 ]);
1438+ JSONTEST_ASSERT_THROWS (objVal[0 ]);
1439+ JSONTEST_ASSERT_THROWS (strVal[0 ]);
1440+
1441+ JSONTEST_ASSERT_THROWS (intVal.clear ());
1442+
1443+ JSONTEST_ASSERT_THROWS (intVal.resize (1 ));
1444+ JSONTEST_ASSERT_THROWS (strVal.resize (1 ));
1445+ JSONTEST_ASSERT_THROWS (objVal.resize (1 ));
1446+
1447+ JSONTEST_ASSERT_THROWS (intVal.asCString ());
1448+
1449+ JSONTEST_ASSERT_THROWS (objVal.asString ());
1450+ JSONTEST_ASSERT_THROWS (arrVal.asString ());
1451+
1452+ JSONTEST_ASSERT_THROWS (strVal.asInt ());
1453+ JSONTEST_ASSERT_THROWS (objVal.asInt ());
1454+ JSONTEST_ASSERT_THROWS (arrVal.asInt ());
1455+
1456+ JSONTEST_ASSERT_THROWS (strVal.asUInt ());
1457+ JSONTEST_ASSERT_THROWS (objVal.asUInt ());
1458+ JSONTEST_ASSERT_THROWS (arrVal.asUInt ());
1459+
1460+ JSONTEST_ASSERT_THROWS (strVal.asInt64 ());
1461+ JSONTEST_ASSERT_THROWS (objVal.asInt64 ());
1462+ JSONTEST_ASSERT_THROWS (arrVal.asInt64 ());
1463+
1464+ JSONTEST_ASSERT_THROWS (strVal.asUInt64 ());
1465+ JSONTEST_ASSERT_THROWS (objVal.asUInt64 ());
1466+ JSONTEST_ASSERT_THROWS (arrVal.asUInt64 ());
1467+
1468+ JSONTEST_ASSERT_THROWS (strVal.asDouble ());
1469+ JSONTEST_ASSERT_THROWS (objVal.asDouble ());
1470+ JSONTEST_ASSERT_THROWS (arrVal.asDouble ());
1471+
1472+ JSONTEST_ASSERT_THROWS (strVal.asFloat ());
1473+ JSONTEST_ASSERT_THROWS (objVal.asFloat ());
1474+ JSONTEST_ASSERT_THROWS (arrVal.asFloat ());
1475+
1476+ JSONTEST_ASSERT_THROWS (strVal.asBool ());
1477+ JSONTEST_ASSERT_THROWS (objVal.asBool ());
1478+ JSONTEST_ASSERT_THROWS (arrVal.asBool ());
1479+
1480+ #endif
14291481}
14301482
14311483JSONTEST_FIXTURE (ValueTest, offsetAccessors) {
@@ -1569,8 +1621,8 @@ int main(int argc, const char *argv[]) {
15691621 JSONTEST_REGISTER_FIXTURE (runner, ValueTest, compareArray);
15701622 JSONTEST_REGISTER_FIXTURE (runner, ValueTest, compareObject);
15711623 JSONTEST_REGISTER_FIXTURE (runner, ValueTest, compareType);
1572- JSONTEST_REGISTER_FIXTURE (runner, ValueTest, checkInteger);
15731624 JSONTEST_REGISTER_FIXTURE (runner, ValueTest, offsetAccessors);
1625+ JSONTEST_REGISTER_FIXTURE (runner, ValueTest, typeChecksThrowExceptions);
15741626
15751627 JSONTEST_REGISTER_FIXTURE (runner, ReaderTest, parseWithNoErrors);
15761628 JSONTEST_REGISTER_FIXTURE (
@@ -1580,6 +1632,7 @@ int main(int argc, const char *argv[]) {
15801632 JSONTEST_REGISTER_FIXTURE (runner, ReaderTest, parseWithDetailError);
15811633
15821634 JSONTEST_REGISTER_FIXTURE (runner, WriterTest, dropNullPlaceholders);
1635+
15831636 return runner.runCommandLine (argc, argv);
15841637}
15851638// vim: et ts=2 sts=2 sw=2 tw=0
0 commit comments