Skip to content

Commit 44c7474

Browse files
committed
univalue: add type check unit tests
1 parent c023092 commit 44c7474

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

src/test/univalue_tests.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,48 @@ BOOST_AUTO_TEST_CASE(univalue_constructor)
6363
BOOST_CHECK_EQUAL(v9.getValStr(), "zappa");
6464
}
6565

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+
66108
BOOST_AUTO_TEST_CASE(univalue_set)
67109
{
68110
UniValue v(UniValue::VSTR, "foo");

0 commit comments

Comments
 (0)