@@ -63,6 +63,48 @@ BOOST_AUTO_TEST_CASE(univalue_constructor)
63
63
BOOST_CHECK_EQUAL (v9.getValStr (), " zappa" );
64
64
}
65
65
66
+ BOOST_AUTO_TEST_CASE (univalue_typecheck)
67
+ {
68
+ UniValue v1;
69
+ BOOST_CHECK (v1.setNumStr (" 1" ));
70
+ BOOST_CHECK (v1.isNum ());
71
+ BOOST_CHECK_THROW (v1.get_bool (), runtime_error);
72
+
73
+ UniValue v2;
74
+ BOOST_CHECK (v2.setBool (true ));
75
+ BOOST_CHECK_EQUAL (v2.get_bool (), true );
76
+ BOOST_CHECK_THROW (v2.get_int (), runtime_error);
77
+
78
+ UniValue v3;
79
+ BOOST_CHECK (v3.setNumStr (" 32482348723847471234" ));
80
+ BOOST_CHECK_THROW (v3.get_int64 (), runtime_error);
81
+ BOOST_CHECK (v3.setNumStr (" 1000" ));
82
+ BOOST_CHECK_EQUAL (v3.get_int64 (), 1000 );
83
+
84
+ UniValue v4;
85
+ BOOST_CHECK (v4.setNumStr (" 2147483648" ));
86
+ BOOST_CHECK_EQUAL (v4.get_int64 (), 2147483648 );
87
+ BOOST_CHECK_THROW (v4.get_int (), runtime_error);
88
+ BOOST_CHECK (v4.setNumStr (" 1000" ));
89
+ BOOST_CHECK_EQUAL (v4.get_int (), 1000 );
90
+ BOOST_CHECK_THROW (v4.get_str (), runtime_error);
91
+ BOOST_CHECK_EQUAL (v4.get_real (), 1000 );
92
+ BOOST_CHECK_THROW (v4.get_array (), runtime_error);
93
+ BOOST_CHECK_THROW (v4.getKeys (), runtime_error);
94
+ BOOST_CHECK_THROW (v4.getValues (), runtime_error);
95
+ BOOST_CHECK_THROW (v4.get_obj (), runtime_error);
96
+
97
+ UniValue v5;
98
+ BOOST_CHECK (v5.read (" [true, 10]" ));
99
+ BOOST_CHECK_NO_THROW (v5.get_array ());
100
+ std::vector<UniValue> vals = v5.getValues ();
101
+ BOOST_CHECK_THROW (vals[0 ].get_int (), runtime_error);
102
+ BOOST_CHECK_EQUAL (vals[0 ].get_bool (), true );
103
+
104
+ BOOST_CHECK_EQUAL (vals[1 ].get_int (), 10 );
105
+ BOOST_CHECK_THROW (vals[1 ].get_bool (), runtime_error);
106
+ }
107
+
66
108
BOOST_AUTO_TEST_CASE (univalue_set)
67
109
{
68
110
UniValue v (UniValue::VSTR, " foo" );
0 commit comments