@@ -1414,18 +1414,70 @@ void ValueTest::checkIsEqual(const Json::Value &x, const Json::Value &y) {
1414
1414
JSONTEST_ASSERT (y.compare (x) == 0 );
1415
1415
}
1416
1416
1417
- JSONTEST_FIXTURE (ValueTest, checkInteger ) {
1417
+ JSONTEST_FIXTURE (ValueTest, typeChecksThrowExceptions ) {
1418
1418
#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
1429
1481
}
1430
1482
1431
1483
JSONTEST_FIXTURE (ValueTest, offsetAccessors) {
@@ -1569,8 +1621,8 @@ int main(int argc, const char *argv[]) {
1569
1621
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, compareArray);
1570
1622
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, compareObject);
1571
1623
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, compareType);
1572
- JSONTEST_REGISTER_FIXTURE (runner, ValueTest, checkInteger);
1573
1624
JSONTEST_REGISTER_FIXTURE (runner, ValueTest, offsetAccessors);
1625
+ JSONTEST_REGISTER_FIXTURE (runner, ValueTest, typeChecksThrowExceptions);
1574
1626
1575
1627
JSONTEST_REGISTER_FIXTURE (runner, ReaderTest, parseWithNoErrors);
1576
1628
JSONTEST_REGISTER_FIXTURE (
@@ -1580,6 +1632,7 @@ int main(int argc, const char *argv[]) {
1580
1632
JSONTEST_REGISTER_FIXTURE (runner, ReaderTest, parseWithDetailError);
1581
1633
1582
1634
JSONTEST_REGISTER_FIXTURE (runner, WriterTest, dropNullPlaceholders);
1635
+
1583
1636
return runner.runCommandLine (argc, argv);
1584
1637
}
1585
1638
// vim: et ts=2 sts=2 sw=2 tw=0
0 commit comments