|
|
|
|
@@ -148,12 +148,20 @@ class Feature_test : public beast::unit_test::suite
|
|
|
|
|
feature.isMember(jss::enabled) && !feature[jss::enabled].asBool(),
|
|
|
|
|
feature[jss::name].asString() + " enabled");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature.isMember(jss::vetoed) && feature[jss::vetoed].isBool() == !expectObsolete &&
|
|
|
|
|
(!feature[jss::vetoed].isBool() ||
|
|
|
|
|
feature[jss::vetoed].asBool() == expectVeto) &&
|
|
|
|
|
(feature[jss::vetoed].isBool() ||
|
|
|
|
|
feature[jss::vetoed].asString() == "Obsolete"),
|
|
|
|
|
feature[jss::name].asString() + " vetoed");
|
|
|
|
|
feature.isMember(jss::vetoed) && feature[jss::vetoed].isBool(),
|
|
|
|
|
feature[jss::name].asString() + " vetoed is bool");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature[jss::vetoed].asBool() == (expectVeto || expectObsolete),
|
|
|
|
|
feature[jss::name].asString() + " vetoed value");
|
|
|
|
|
if (expectObsolete)
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature.isMember(jss::obsolete) && feature[jss::obsolete].isBool() &&
|
|
|
|
|
feature[jss::obsolete].asBool() == true,
|
|
|
|
|
feature[jss::name].asString() + " obsolete");
|
|
|
|
|
else
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
!feature.isMember(jss::obsolete),
|
|
|
|
|
feature[jss::name].asString() + " no obsolete");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature.isMember(jss::supported) && feature[jss::supported].asBool(),
|
|
|
|
|
feature[jss::name].asString() + " supported");
|
|
|
|
|
@@ -253,6 +261,7 @@ class Feature_test : public beast::unit_test::suite
|
|
|
|
|
(*it)[jss::supported].asBool() == expectSupported,
|
|
|
|
|
(*it)[jss::name].asString() + " supported");
|
|
|
|
|
BEAST_EXPECT(!(*it).isMember(jss::vetoed));
|
|
|
|
|
BEAST_EXPECT(!(*it).isMember(jss::obsolete));
|
|
|
|
|
BEAST_EXPECT(!(*it).isMember(jss::majority));
|
|
|
|
|
BEAST_EXPECT(!(*it).isMember(jss::count));
|
|
|
|
|
BEAST_EXPECT(!(*it).isMember(jss::validations));
|
|
|
|
|
@@ -315,13 +324,23 @@ class Feature_test : public beast::unit_test::suite
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
!(*it).isMember(jss::vetoed), (*it)[jss::name].asString() + " vetoed");
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
(*it).isMember(jss::vetoed) && (*it)[jss::vetoed].isBool() == !expectObsolete &&
|
|
|
|
|
(!(*it)[jss::vetoed].isBool() ||
|
|
|
|
|
(*it)[jss::vetoed].asBool() == expectVeto) &&
|
|
|
|
|
((*it)[jss::vetoed].isBool() ||
|
|
|
|
|
(*it)[jss::vetoed].asString() == "Obsolete"),
|
|
|
|
|
(*it)[jss::name].asString() + " vetoed");
|
|
|
|
|
(*it).isMember(jss::vetoed) && (*it)[jss::vetoed].isBool(),
|
|
|
|
|
(*it)[jss::name].asString() + " vetoed is bool");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
(*it)[jss::vetoed].asBool() == (expectVeto || expectObsolete),
|
|
|
|
|
(*it)[jss::name].asString() + " vetoed value");
|
|
|
|
|
if (expectObsolete)
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
(*it).isMember(jss::obsolete) && (*it)[jss::obsolete].isBool() &&
|
|
|
|
|
(*it)[jss::obsolete].asBool() == true,
|
|
|
|
|
(*it)[jss::name].asString() + " obsolete");
|
|
|
|
|
else
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
!(*it).isMember(jss::obsolete),
|
|
|
|
|
(*it)[jss::name].asString() + " no obsolete");
|
|
|
|
|
}
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
(*it).isMember(jss::supported) && (*it)[jss::supported].asBool() == expectSupported,
|
|
|
|
|
(*it)[jss::name].asString() + " supported");
|
|
|
|
|
@@ -389,12 +408,20 @@ class Feature_test : public beast::unit_test::suite
|
|
|
|
|
(expectVeto || expectObsolete) ^ feature.isMember(jss::majority),
|
|
|
|
|
feature[jss::name].asString() + " majority");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature.isMember(jss::vetoed) && feature[jss::vetoed].isBool() == !expectObsolete &&
|
|
|
|
|
(!feature[jss::vetoed].isBool() ||
|
|
|
|
|
feature[jss::vetoed].asBool() == expectVeto) &&
|
|
|
|
|
(feature[jss::vetoed].isBool() ||
|
|
|
|
|
feature[jss::vetoed].asString() == "Obsolete"),
|
|
|
|
|
feature[jss::name].asString() + " vetoed");
|
|
|
|
|
feature.isMember(jss::vetoed) && feature[jss::vetoed].isBool(),
|
|
|
|
|
feature[jss::name].asString() + " vetoed is bool");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature[jss::vetoed].asBool() == (expectVeto || expectObsolete),
|
|
|
|
|
feature[jss::name].asString() + " vetoed value");
|
|
|
|
|
if (expectObsolete)
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature.isMember(jss::obsolete) && feature[jss::obsolete].isBool() &&
|
|
|
|
|
feature[jss::obsolete].asBool() == true,
|
|
|
|
|
feature[jss::name].asString() + " obsolete");
|
|
|
|
|
else
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
!feature.isMember(jss::obsolete),
|
|
|
|
|
feature[jss::name].asString() + " no obsolete");
|
|
|
|
|
BEAST_EXPECTS(feature.isMember(jss::count), feature[jss::name].asString() + " count");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature.isMember(jss::threshold), feature[jss::name].asString() + " threshold");
|
|
|
|
|
@@ -485,8 +512,9 @@ class Feature_test : public beast::unit_test::suite
|
|
|
|
|
auto feature = *(jrr.begin());
|
|
|
|
|
BEAST_EXPECTS(feature[jss::name] == featureName, "name");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature[jss::vetoed].isString() && feature[jss::vetoed].asString() == "Obsolete",
|
|
|
|
|
"vetoed");
|
|
|
|
|
feature[jss::vetoed].isBool() && feature[jss::vetoed].asBool() == true, "vetoed");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature[jss::obsolete].isBool() && feature[jss::obsolete].asBool() == true, "obsolete");
|
|
|
|
|
|
|
|
|
|
jrr = env.rpc("feature", featureName, "reject")[jss::result];
|
|
|
|
|
if (!BEAST_EXPECTS(jrr[jss::status] == jss::success, "status"))
|
|
|
|
|
@@ -497,8 +525,9 @@ class Feature_test : public beast::unit_test::suite
|
|
|
|
|
feature = *(jrr.begin());
|
|
|
|
|
BEAST_EXPECTS(feature[jss::name] == featureName, "name");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature[jss::vetoed].isString() && feature[jss::vetoed].asString() == "Obsolete",
|
|
|
|
|
"vetoed");
|
|
|
|
|
feature[jss::vetoed].isBool() && feature[jss::vetoed].asBool() == true, "vetoed");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature[jss::obsolete].isBool() && feature[jss::obsolete].asBool() == true, "obsolete");
|
|
|
|
|
|
|
|
|
|
jrr = env.rpc("feature", featureName, "accept")[jss::result];
|
|
|
|
|
if (!BEAST_EXPECTS(jrr[jss::status] == jss::success, "status"))
|
|
|
|
|
@@ -509,8 +538,9 @@ class Feature_test : public beast::unit_test::suite
|
|
|
|
|
feature = *(jrr.begin());
|
|
|
|
|
BEAST_EXPECTS(feature[jss::name] == featureName, "name");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature[jss::vetoed].isString() && feature[jss::vetoed].asString() == "Obsolete",
|
|
|
|
|
"vetoed");
|
|
|
|
|
feature[jss::vetoed].isBool() && feature[jss::vetoed].asBool() == true, "vetoed");
|
|
|
|
|
BEAST_EXPECTS(
|
|
|
|
|
feature[jss::obsolete].isBool() && feature[jss::obsolete].asBool() == true, "obsolete");
|
|
|
|
|
|
|
|
|
|
// anything other than accept or reject is an error
|
|
|
|
|
jrr = env.rpc("feature", featureName, "maybe");
|
|
|
|
|
|