Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
test
base32_tests.cpp
Go to the documentation of this file.
1
// Copyright (c) 2012-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
util/strencodings.h
>
6
7
#include <boost/test/unit_test.hpp>
8
9
#include <algorithm>
10
#include <string>
11
12
using namespace
std::literals;
13
14
BOOST_AUTO_TEST_SUITE(base32_tests)
15
16
BOOST_AUTO_TEST_CASE
(base32_testvectors)
17
{
18
static
const
std::string vstrIn[] = {
""
,
"f"
,
"fo"
,
"foo"
,
"foob"
,
"fooba"
,
"foobar"
};
19
static
const
std::string vstrOut[] = {
""
,
"my======"
,
"mzxq===="
,
"mzxw6==="
,
"mzxw6yq="
,
"mzxw6ytb"
,
"mzxw6ytboi======"
};
20
static
const
std::string vstrOutNoPadding[] = {
""
,
"my"
,
"mzxq"
,
"mzxw6"
,
"mzxw6yq"
,
"mzxw6ytb"
,
"mzxw6ytboi"
};
21
for
(
unsigned
int
i=0; i<std::size(vstrIn); i++)
22
{
23
std::string strEnc =
EncodeBase32
(vstrIn[i]);
24
BOOST_CHECK_EQUAL
(strEnc, vstrOut[i]);
25
strEnc =
EncodeBase32
(vstrIn[i],
false
);
26
BOOST_CHECK_EQUAL
(strEnc, vstrOutNoPadding[i]);
27
auto
dec =
DecodeBase32
(vstrOut[i]);
28
BOOST_REQUIRE(dec);
29
BOOST_CHECK_MESSAGE(std::ranges::equal(*dec, vstrIn[i]), vstrOut[i]);
30
}
31
32
BOOST_CHECK
(!
DecodeBase32
(
"AWSX3VPPinvalid"
));
// invalid size
33
BOOST_CHECK
(
DecodeBase32
(
"AWSX3VPP"
));
// valid
34
35
// Decoding strings with embedded NUL characters should fail
36
BOOST_CHECK
(!
DecodeBase32
(
"invalid\0"
sv));
// correct size, invalid due to \0
37
BOOST_CHECK
(!
DecodeBase32
(
"AWSX3VPP\0invalid"
sv));
// correct size, invalid due to \0
38
}
39
40
BOOST_AUTO_TEST_CASE
(base32_padding)
41
{
42
// Is valid without padding
43
BOOST_CHECK_EQUAL
(
EncodeBase32
(
"fooba"
),
"mzxw6ytb"
);
44
45
// Valid size
46
BOOST_CHECK
(!
DecodeBase32
(
"========"
));
47
BOOST_CHECK
(!
DecodeBase32
(
"a======="
));
48
BOOST_CHECK
(
DecodeBase32
(
"aa======"
));
49
BOOST_CHECK
(!
DecodeBase32
(
"aaa====="
));
50
BOOST_CHECK
(
DecodeBase32
(
"aaaa===="
));
51
BOOST_CHECK
(
DecodeBase32
(
"aaaaa==="
));
52
BOOST_CHECK
(!
DecodeBase32
(
"aaaaaa=="
));
53
BOOST_CHECK
(
DecodeBase32
(
"aaaaaaa="
));
54
}
55
56
BOOST_AUTO_TEST_SUITE_END
()
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(base32_testvectors)
Definition
base32_tests.cpp:16
BOOST_AUTO_TEST_SUITE_END
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(ipc_tests)
Definition
ipc_tests.cpp:13
BOOST_CHECK_EQUAL
#define BOOST_CHECK_EQUAL(v1, v2)
Definition
object.cpp:17
BOOST_CHECK
#define BOOST_CHECK(expr)
Definition
object.cpp:16
strencodings.h
DecodeBase32
std::optional< std::vector< unsigned char > > DecodeBase32(std::string_view str)
Definition
strencodings.cpp:164
EncodeBase32
std::string EncodeBase32(std::span< const unsigned char > input, bool pad)
Base32 encode.
Definition
strencodings.cpp:144
Generated on
for Bitcoin Core by
1.17.0