mirror of
https://github.com/XRPLF/rippled.git
synced 2026-04-29 15:37:57 +00:00
Fix unit tests
This commit is contained in:
@@ -12,7 +12,5 @@ xrpl_add_test(basics)
|
||||
target_link_libraries(xrpl.test.basics PRIVATE xrpl.imports.test)
|
||||
xrpl_add_test(crypto)
|
||||
target_link_libraries(xrpl.test.crypto PRIVATE xrpl.imports.test)
|
||||
|
||||
# Protocol unit tests
|
||||
xrpl_add_test(protocol)
|
||||
target_link_libraries(xrpl.test.protocol PRIVATE xrpl.imports.test)
|
||||
|
||||
@@ -145,48 +145,34 @@ using Domain = uint256;
|
||||
Set c;
|
||||
|
||||
c.insert(a1);
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(a2);
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Issue(c1, i2)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Issue(c1, i1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Issue(c2, i2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Issue(c1, i2)) == 0);
|
||||
CHECK(c.erase(Issue(c1, i1)) == 1);
|
||||
CHECK(c.erase(Issue(c2, i2)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
{
|
||||
Set c;
|
||||
|
||||
c.insert(a1);
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(a2);
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Issue(c1, i2)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Issue(c1, i1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Issue(c2, i2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Issue(c1, i2)) == 0);
|
||||
CHECK(c.erase(Issue(c1, i1)) == 1);
|
||||
CHECK(c.erase(Issue(c2, i2)) == 1);
|
||||
CHECK(c.empty());
|
||||
|
||||
#if STL_SET_HAS_EMPLACE
|
||||
c.emplace(c1, i1);
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.emplace(c2, i2);
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -206,40 +192,28 @@ using Domain = uint256;
|
||||
Map c;
|
||||
|
||||
c.insert(std::make_pair(a1, 1));
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(std::make_pair(a2, 2));
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Issue(c1, i2)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Issue(c1, i1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Issue(c2, i2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Issue(c1, i2)) == 0);
|
||||
CHECK(c.erase(Issue(c1, i1)) == 1);
|
||||
CHECK(c.erase(Issue(c2, i2)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
{
|
||||
Map c;
|
||||
|
||||
c.insert(std::make_pair(a1, 1));
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(std::make_pair(a2, 2));
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Issue(c1, i2)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Issue(c1, i1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Issue(c2, i2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Issue(c1, i2)) == 0);
|
||||
CHECK(c.erase(Issue(c1, i1)) == 1);
|
||||
CHECK(c.erase(Issue(c2, i2)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,25 +233,17 @@ using Domain = uint256;
|
||||
Set c;
|
||||
|
||||
c.insert(std::make_pair(a1, domain1));
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(std::make_pair(a2, domain1));
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
c.insert(std::make_pair(a2, domain2));
|
||||
if (!CHECK(c.size() == 3))
|
||||
return;
|
||||
CHECK(c.size() == 3);
|
||||
|
||||
if (!CHECK(c.erase(std::make_pair(Issue(c1, i2), domain1)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(std::make_pair(a1, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(std::make_pair(a2, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(std::make_pair(a2, domain2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(std::make_pair(Issue(c1, i2), domain1)) == 0);
|
||||
CHECK(c.erase(std::make_pair(a1, domain1)) == 1);
|
||||
CHECK(c.erase(std::make_pair(a2, domain1)) == 1);
|
||||
CHECK(c.erase(std::make_pair(a2, domain2)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
template <class Map>
|
||||
@@ -296,25 +262,17 @@ using Domain = uint256;
|
||||
Map c;
|
||||
|
||||
c.insert(std::make_pair(std::make_pair(a1, domain1), 1));
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(std::make_pair(std::make_pair(a2, domain1), 2));
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
c.insert(std::make_pair(std::make_pair(a2, domain2), 2));
|
||||
if (!CHECK(c.size() == 3))
|
||||
return;
|
||||
CHECK(c.size() == 3);
|
||||
|
||||
if (!CHECK(c.erase(std::make_pair(Issue(c1, i2), domain1)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(std::make_pair(a1, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(std::make_pair(a2, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(std::make_pair(a2, domain2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(std::make_pair(Issue(c1, i2), domain1)) == 0);
|
||||
CHECK(c.erase(std::make_pair(a1, domain1)) == 1);
|
||||
CHECK(c.erase(std::make_pair(a2, domain1)) == 1);
|
||||
CHECK(c.erase(std::make_pair(a2, domain2)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
|
||||
@@ -561,48 +519,34 @@ using Domain = uint256;
|
||||
Set c;
|
||||
|
||||
c.insert(b1);
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(b2);
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a1, std::nullopt)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a1, std::nullopt)) == 0);
|
||||
CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
{
|
||||
Set c;
|
||||
|
||||
c.insert(b1);
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(b2);
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a1, std::nullopt)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a1, std::nullopt)) == 0);
|
||||
CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1);
|
||||
CHECK(c.empty());
|
||||
|
||||
#if STL_SET_HAS_EMPLACE
|
||||
c.emplace(a1, a2);
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.emplace(a2, a1);
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -610,35 +554,24 @@ using Domain = uint256;
|
||||
Set c;
|
||||
|
||||
c.insert(b1_d1);
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(b2_d1);
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
c.insert(b1_d2);
|
||||
if (!CHECK(c.size() == 3))
|
||||
return;
|
||||
CHECK(c.size() == 3);
|
||||
c.insert(b2_d2);
|
||||
if (!CHECK(c.size() == 4))
|
||||
return;
|
||||
CHECK(c.size() == 4);
|
||||
|
||||
// Try removing non-existent elements
|
||||
if (!CHECK(c.erase(Book(a2, a2, domain1)) == 0))
|
||||
return;
|
||||
CHECK(c.erase(Book(a2, a2, domain1)) == 0);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a2, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a2, domain1)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, domain1)) == 1);
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a2, domain2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, domain2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a2, domain2)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, domain2)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
{
|
||||
@@ -648,22 +581,15 @@ using Domain = uint256;
|
||||
c.insert(b2);
|
||||
c.insert(b1_d1);
|
||||
c.insert(b2_d1);
|
||||
if (!CHECK(c.size() == 4))
|
||||
return;
|
||||
CHECK(c.size() == 4);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1);
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a2, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a2, domain1)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, domain1)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -696,21 +622,15 @@ using Domain = uint256;
|
||||
|
||||
// c.insert (value_type (b1, 1));
|
||||
c.insert(std::make_pair(b1, 1));
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
// c.insert (value_type (b2, 2));
|
||||
c.insert(std::make_pair(b2, 1));
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a1, std::nullopt)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a1, std::nullopt)) == 0);
|
||||
CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
{
|
||||
@@ -718,56 +638,39 @@ using Domain = uint256;
|
||||
|
||||
// c.insert (value_type (b1, 1));
|
||||
c.insert(std::make_pair(b1, 1));
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
// c.insert (value_type (b2, 2));
|
||||
c.insert(std::make_pair(b2, 1));
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a1, std::nullopt)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a1, std::nullopt)) == 0);
|
||||
CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
{
|
||||
Map c;
|
||||
|
||||
c.insert(std::make_pair(b1_d1, 10));
|
||||
if (!CHECK(c.size() == 1))
|
||||
return;
|
||||
CHECK(c.size() == 1);
|
||||
c.insert(std::make_pair(b2_d1, 20));
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.size() == 2);
|
||||
c.insert(std::make_pair(b1_d2, 30));
|
||||
if (!CHECK(c.size() == 3))
|
||||
return;
|
||||
CHECK(c.size() == 3);
|
||||
c.insert(std::make_pair(b2_d2, 40));
|
||||
if (!CHECK(c.size() == 4))
|
||||
return;
|
||||
CHECK(c.size() == 4);
|
||||
|
||||
// Try removing non-existent elements
|
||||
if (!CHECK(c.erase(Book(a2, a2, domain1)) == 0))
|
||||
return;
|
||||
CHECK(c.erase(Book(a2, a2, domain1)) == 0);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a2, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a2, domain1)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, domain1)) == 1);
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a2, domain2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, domain2)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a2, domain2)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, domain2)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
|
||||
{
|
||||
@@ -777,28 +680,19 @@ using Domain = uint256;
|
||||
c.insert(std::make_pair(b2, 2));
|
||||
c.insert(std::make_pair(b1_d1, 3));
|
||||
c.insert(std::make_pair(b2_d1, 4));
|
||||
if (!CHECK(c.size() == 4))
|
||||
return;
|
||||
CHECK(c.size() == 4);
|
||||
|
||||
// Try removing non-existent elements
|
||||
if (!CHECK(c.erase(Book(a1, a1, domain1)) == 0))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a2, domain2)) == 0))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a1, domain1)) == 0);
|
||||
CHECK(c.erase(Book(a2, a2, domain2)) == 0);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.size() == 2))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a2, std::nullopt)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, std::nullopt)) == 1);
|
||||
CHECK(c.size() == 2);
|
||||
|
||||
if (!CHECK(c.erase(Book(a1, a2, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.erase(Book(a2, a1, domain1)) == 1))
|
||||
return;
|
||||
if (!CHECK(c.empty()))
|
||||
return;
|
||||
CHECK(c.erase(Book(a1, a2, domain1)) == 1);
|
||||
CHECK(c.erase(Book(a2, a1, domain1)) == 1);
|
||||
CHECK(c.empty());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -811,6 +705,8 @@ using Domain = uint256;
|
||||
|
||||
} // namespace ripple
|
||||
|
||||
using namespace ripple;
|
||||
|
||||
TEST_SUITE_BEGIN("Issue");
|
||||
|
||||
TEST_CASE("Unsigned types")
|
||||
|
||||
@@ -158,14 +158,16 @@ TEST_CASE("Base58")
|
||||
auto const si = toBase58(TokenType::NodePublic, keys[i]);
|
||||
CHECK(!si.empty());
|
||||
auto const ski = parseBase58<PublicKey>(TokenType::NodePublic, si);
|
||||
CHECK(ski && (keys[i] == *ski));
|
||||
CHECK(ski);
|
||||
CHECK(keys[i] == *ski);
|
||||
for (std::size_t j = i; j != keys.size(); ++j)
|
||||
{
|
||||
CHECK((keys[i] == keys[j]) == (i == j));
|
||||
auto const sj = toBase58(TokenType::NodePublic, keys[j]);
|
||||
CHECK((si == sj) == (i == j));
|
||||
auto const skj = parseBase58<PublicKey>(TokenType::NodePublic, sj);
|
||||
CHECK(skj && (keys[j] == *skj));
|
||||
CHECK(skj);
|
||||
CHECK(keys[j] == *skj);
|
||||
CHECK((*ski == *skj) == (i == j));
|
||||
}
|
||||
}
|
||||
@@ -235,14 +237,16 @@ TEST_CASE("Base58")
|
||||
auto const si = toBase58(TokenType::NodePublic, keys[i]);
|
||||
CHECK(!si.empty());
|
||||
auto const ski = parseBase58<PublicKey>(TokenType::NodePublic, si);
|
||||
CHECK(ski && (keys[i] == *ski));
|
||||
CHECK(ski);
|
||||
CHECK(keys[i] == *ski);
|
||||
for (std::size_t j = i; j != keys.size(); ++j)
|
||||
{
|
||||
CHECK((keys[i] == keys[j]) == (i == j));
|
||||
auto const sj = toBase58(TokenType::NodePublic, keys[j]);
|
||||
CHECK((si == sj) == (i == j));
|
||||
auto const skj = parseBase58<PublicKey>(TokenType::NodePublic, sj);
|
||||
CHECK(skj && (keys[j] == *skj));
|
||||
CHECK(skj);
|
||||
CHECK(keys[j] == *skj);
|
||||
CHECK((*ski == *skj) == (i == j));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user