mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-18 13:17:55 +02:00
blech32: add test vectors for blech32 and blech32m
Converted the bech32 valid test vectors. Did not convert the invalid test vectors because it was not obvious how.
This commit is contained in:
parent
15a826ea27
commit
d13fb4994b
1 changed files with 89 additions and 0 deletions
|
|
@ -6,11 +6,100 @@
|
|||
#include <random.h>
|
||||
#include <util/strencodings.h>
|
||||
#include <test/util/setup_common.h>
|
||||
#include <test/util/str.h>
|
||||
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
BOOST_FIXTURE_TEST_SUITE(blech32_tests, BasicTestingSetup)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(blech32_testvectors_valid)
|
||||
{
|
||||
static const std::string CASES[] = {
|
||||
"A133NZFWEYK7UT",
|
||||
"a133nzfweyk7ut",
|
||||
"an83characterlonghumanreadablepartthatcontainsthenumber1andtheexcludedcharactersbio195jhgldwsn5j",
|
||||
"abcdef1qpzry9x8gf2tvdw0s3jn54khce6mua7lgmcn7l7t7xve",
|
||||
"11qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq3xldwlutcw2l",
|
||||
"split1checkupstagehandshakeupstreamerranterredcaperredegneyqml9esp",
|
||||
"?19dv34t3p4s35",
|
||||
};
|
||||
for (const std::string& str : CASES) {
|
||||
const auto dec = blech32::Decode(str);
|
||||
BOOST_CHECK(dec.encoding == blech32::Encoding::BLECH32);
|
||||
std::string recode = blech32::Encode(blech32::Encoding::BLECH32, dec.hrp, dec.data);
|
||||
BOOST_CHECK(!recode.empty());
|
||||
BOOST_CHECK(CaseInsensitiveEqual(str, recode));
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(blech32m_testvectors_valid)
|
||||
{
|
||||
static const std::string CASES[] = {
|
||||
"A1EYL4VXQ3HRPT",
|
||||
"a1eyl4vxq3hrpt",
|
||||
"an83characterlonghumanreadablepartthatcontainsthetheexcludedcharactersbioandnumber11yatn6l85muud",
|
||||
"abcdef1l7aum6echk45nj3s0wdvt2fg8x9yrzpqg8m5pqg67zq3",
|
||||
"11llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll09wxh8ajdvxv",
|
||||
"split1checkupstagehandshakeupstreamerranterredcaperred3alwpgz2yydp",
|
||||
"?1dcqxsrg55dv5"
|
||||
};
|
||||
for (const std::string& str : CASES) {
|
||||
const auto dec = blech32::Decode(str);
|
||||
BOOST_CHECK(dec.encoding == blech32::Encoding::BLECH32M);
|
||||
std::string recode = blech32::Encode(blech32::Encoding::BLECH32M, dec.hrp, dec.data);
|
||||
BOOST_CHECK(!recode.empty());
|
||||
BOOST_CHECK(CaseInsensitiveEqual(str, recode));
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(blech32m_testvectors_invalid)
|
||||
{
|
||||
static const std::string CASES[] = {
|
||||
" 1xj0phk",
|
||||
"\x7f""1g6xzxy",
|
||||
"\x80""1vctc34",
|
||||
"an84characterslonghumanreadablepartthatcontainsthetheexcludedcharactersbioandnumber11d6pts4",
|
||||
"qyrz8wqd2c9m",
|
||||
"1qyrz8wqd2c9m",
|
||||
"y1b0jsk6g",
|
||||
"lt1igcx5c0",
|
||||
"in1muywd",
|
||||
"mm1crxm3i",
|
||||
"au1s5cgom",
|
||||
"M1VUXWEZ",
|
||||
"16plkw9",
|
||||
"1p2gdwpf"
|
||||
};
|
||||
for (const std::string& str : CASES) {
|
||||
const auto dec = blech32::Decode(str);
|
||||
BOOST_CHECK(dec.encoding == blech32::Encoding::INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(blech32_testvectors_invalid)
|
||||
{
|
||||
static const std::string CASES[] = {
|
||||
" 1nwldj5",
|
||||
"\x7f""1axkwrx",
|
||||
"\x80""1eym55h",
|
||||
"an84characterslonghumanreadablepartthatcontainsthenumber1andtheexcludedcharactersbio1569pvx",
|
||||
"pzry9x0s0muk",
|
||||
"1pzry9x0s0muk",
|
||||
"x1b4n0q5v",
|
||||
"li1dgmt3",
|
||||
"de1lg7wt\xff",
|
||||
"A1G7SGD8",
|
||||
"10a06t8",
|
||||
"1qzzfhee",
|
||||
"a12UEL5L",
|
||||
"A12uEL5L",
|
||||
};
|
||||
for (const std::string& str : CASES) {
|
||||
const auto dec = blech32::Decode(str);
|
||||
BOOST_CHECK(dec.encoding == blech32::Encoding::INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(blech32_polymod_sanity)
|
||||
{
|
||||
std::vector<unsigned char> data(40);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue