Projects : bitcoin : bitcoin_dumpblock_no_losers

bitcoin/src/test/base58_tests.cpp

Dir - Raw

1#include <boost/test/unit_test.hpp>
2
3#include "../util.h"
4
5BOOST_AUTO_TEST_SUITE(base58_tests)
6
7// TODO:
8// EncodeBase58Check
9// DecodeBase58Check
10// CBase58Data
11// bool SetString(const char* psz)
12 // bool SetString(const std::string& str)
13 // std::string ToString() const
14 // int CompareTo(const CBase58Data& b58) const
15 // bool operator==(const CBase58Data& b58) const
16 // bool operator<=(const CBase58Data& b58) const
17 // bool operator>=(const CBase58Data& b58) const
18 // bool operator< (const CBase58Data& b58) const
19 // bool operator> (const CBase58Data& b58) const
20
21// CBitcoinAddress
22 // bool SetHash160(const uint160& hash160)
23 // bool SetPubKey(const std::vector<unsigned char>& vchPubKey)
24 // bool IsValid() const
25 // CBitcoinAddress()
26 // CBitcoinAddress(uint160 hash160In)
27 // CBitcoinAddress(const std::vector<unsigned char>& vchPubKey)
28 // CBitcoinAddress(const std::string& strAddress)
29 // CBitcoinAddress(const char* pszAddress)
30 // uint160 GetHash160() const
31
32#define U(x) (reinterpret_cast<const unsigned char*>(x))
33static struct {
34 const unsigned char *data;
35 int size;
36} vstrIn[] = {
37{U(""), 0},
38{U("\x61"), 1},
39{U("\x62\x62\x62"), 3},
40{U("\x63\x63\x63"), 3},
41{U("\x73\x69\x6d\x70\x6c\x79\x20\x61\x20\x6c\x6f\x6e\x67\x20\x73\x74\x72\x69\x6e\x67"), 20},
42{U("\x00\xeb\x15\x23\x1d\xfc\xeb\x60\x92\x58\x86\xb6\x7d\x06\x52\x99\x92\x59\x15\xae\xb1\x72\xc0\x66\x47"), 25},
43{U("\x51\x6b\x6f\xcd\x0f"), 5},
44{U("\xbf\x4f\x89\x00\x1e\x67\x02\x74\xdd"), 9},
45{U("\x57\x2e\x47\x94"), 4},
46{U("\xec\xac\x89\xca\xd9\x39\x23\xc0\x23\x21"), 10},
47{U("\x10\xc8\x51\x1e"), 4},
48{U("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), 10},
49};
50
51const char *vstrOut[] = {
52"",
53"2g",
54"a3gV",
55"aPEr",
56"2cFupjhnEsSn59qHXstmK2ffpLv2",
57"1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L",
58"ABnLTmg",
59"3SEo3LWLoPntC",
60"3EFU7m",
61"EJDM8drfXA6uyA",
62"Rt5zm",
63"1111111111"
64};
65
66BOOST_AUTO_TEST_CASE(base58_EncodeBase58)
67{
68 for (int i=0; i<sizeof(vstrIn)/sizeof(vstrIn[0]); i++)
69 {
70 BOOST_CHECK_EQUAL(EncodeBase58(vstrIn[i].data, vstrIn[i].data + vstrIn[i].size), vstrOut[i]);
71 }
72}
73
74BOOST_AUTO_TEST_CASE(base58_DecodeBase58)
75{
76 std::vector<unsigned char> result;
77 for (int i=0; i<sizeof(vstrIn)/sizeof(vstrIn[0]); i++)
78 {
79 std::vector<unsigned char> expected(vstrIn[i].data, vstrIn[i].data + vstrIn[i].size);
80 BOOST_CHECK(DecodeBase58(vstrOut[i], result));
81 BOOST_CHECK_EQUAL_COLLECTIONS(result.begin(), result.end(), expected.begin(), expected.end());
82 }
83 BOOST_CHECK(!DecodeBase58("invalid", result));
84}
85
86BOOST_AUTO_TEST_SUITE_END()
87