From ec849d9a2889e89ba484dacbc7d2ce258f090545 Mon Sep 17 00:00:00 2001 From: John Newbery Date: Tue, 12 Dec 2017 17:53:49 -0500 Subject: [PATCH 1/3] [tests] Fix BOOST_CHECK_THROW macro BOOST_CHECK_THROW doesn't correctly fail the test if no exception is throw. Fix that (and add an assert message). Bug and fix found by MarcoFalke. --- test/object.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/object.cpp b/test/object.cpp index 0244629..679cc9f 100644 --- a/test/object.cpp +++ b/test/object.cpp @@ -19,9 +19,10 @@ #define BOOST_CHECK_THROW(stmt, excMatch) { \ try { \ (stmt); \ + assert(0 && "No exception caught"); \ } catch (excMatch & e) { \ } catch (...) { \ - assert(0); \ + assert(0 && "Wrong exception caught"); \ } \ } #define BOOST_CHECK_NO_THROW(stmt) { \ From b3c44c947fe7ffdc60033e48d75da82129ab8cef Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Sun, 24 Sep 2017 23:35:24 +0200 Subject: [PATCH 2/3] Pushing boolean value to univalue correctly --- include/univalue.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/univalue.h b/include/univalue.h index 4fd2223..c15b2f0 100644 --- a/include/univalue.h +++ b/include/univalue.h @@ -130,6 +130,10 @@ class UniValue { UniValue tmpVal(val_); return pushKV(key, tmpVal); } + bool pushKV(const std::string& key, bool val_) { + UniValue tmpVal((bool)val_); + return pushKV(key, tmpVal); + } bool pushKV(const std::string& key, int val_) { UniValue tmpVal((int64_t)val_); return pushKV(key, tmpVal); From 129bad96d53f81dd5f0032d2fd2075303574d32a Mon Sep 17 00:00:00 2001 From: John Newbery Date: Tue, 12 Dec 2017 13:07:19 -0500 Subject: [PATCH 3/3] [tests] test pushKV for boolean values --- test/object.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test/object.cpp b/test/object.cpp index 679cc9f..70ccc0d 100644 --- a/test/object.cpp +++ b/test/object.cpp @@ -261,6 +261,12 @@ BOOST_AUTO_TEST_CASE(univalue_object) strKey = "temperature"; BOOST_CHECK(obj.pushKV(strKey, (double) 90.012)); + strKey = "moon"; + BOOST_CHECK(obj.pushKV(strKey, true)); + + strKey = "spoon"; + BOOST_CHECK(obj.pushKV(strKey, false)); + UniValue obj2(UniValue::VOBJ); BOOST_CHECK(obj2.pushKV("cat1", 9000)); BOOST_CHECK(obj2.pushKV("cat2", 12345)); @@ -268,7 +274,7 @@ BOOST_AUTO_TEST_CASE(univalue_object) BOOST_CHECK(obj.pushKVs(obj2)); BOOST_CHECK_EQUAL(obj.empty(), false); - BOOST_CHECK_EQUAL(obj.size(), 9); + BOOST_CHECK_EQUAL(obj.size(), 11); BOOST_CHECK_EQUAL(obj["age"].getValStr(), "100"); BOOST_CHECK_EQUAL(obj["first"].getValStr(), "John"); @@ -277,6 +283,8 @@ BOOST_AUTO_TEST_CASE(univalue_object) BOOST_CHECK_EQUAL(obj["time"].getValStr(), "3600"); BOOST_CHECK_EQUAL(obj["calories"].getValStr(), "12"); BOOST_CHECK_EQUAL(obj["temperature"].getValStr(), "90.012"); + BOOST_CHECK_EQUAL(obj["moon"].getValStr(), "1"); + BOOST_CHECK_EQUAL(obj["spoon"].getValStr(), ""); BOOST_CHECK_EQUAL(obj["cat1"].getValStr(), "9000"); BOOST_CHECK_EQUAL(obj["cat2"].getValStr(), "12345"); @@ -289,6 +297,8 @@ BOOST_AUTO_TEST_CASE(univalue_object) BOOST_CHECK(obj.exists("time")); BOOST_CHECK(obj.exists("calories")); BOOST_CHECK(obj.exists("temperature")); + BOOST_CHECK(obj.exists("moon")); + BOOST_CHECK(obj.exists("spoon")); BOOST_CHECK(obj.exists("cat1")); BOOST_CHECK(obj.exists("cat2")); @@ -302,6 +312,8 @@ BOOST_AUTO_TEST_CASE(univalue_object) objTypes["time"] = UniValue::VNUM; objTypes["calories"] = UniValue::VNUM; objTypes["temperature"] = UniValue::VNUM; + objTypes["moon"] = UniValue::VBOOL; + objTypes["spoon"] = UniValue::VBOOL; objTypes["cat1"] = UniValue::VNUM; objTypes["cat2"] = UniValue::VNUM; BOOST_CHECK(obj.checkObject(objTypes));