-
+ CD64D8B909A8B6A3BC01D0AC653F46128A73953521B58EDE9FF5A2C7D2EE79DE2CAD4F89A56A6D242C6705EBF93A7C04B8978E8A13D9B152C48DADC7687508A2
bitcoin/src/test/base58_tests.cpp
(0 . 0)(1 . 118)
22907 // /****************************\
22908 // * EXPERIMENTAL BRANCH. *
22909 // * FOR LABORATORY USE ONLY. *
22910 // ********************************
22911 // ************
22912 // **************
22913 // ****************
22914 // **** **** ****
22915 // *** *** ***
22916 // *** *** ***
22917 // *** * * **
22918 // ******** ********
22919 // ******* ******
22920 // *** **
22921 // * ******* **
22922 // ** * * * * *
22923 // ** * * ***
22924 // **** * * * * ****
22925 // **** *** * * ** ***
22926 // **** ********* ******
22927 // ******* ***** *******
22928 // ********* ****** **
22929 // ** ****** ******
22930 // ** ******* **
22931 // ** ******* ***
22932 // **** ******** ************
22933 // ************ ************
22934 // ******** *******
22935 // ****** ****
22936 // *** ***
22937 // ********************************
22938 #include <boost/test/unit_test.hpp>
22939
22940 #include "../util.h"
22941
22942 BOOST_AUTO_TEST_SUITE(base58_tests)
22943
22944 // TODO:
22945 // EncodeBase58Check
22946 // DecodeBase58Check
22947 // CBase58Data
22948 // bool SetString(const char* psz)
22949 // bool SetString(const std::string& str)
22950 // std::string ToString() const
22951 // int CompareTo(const CBase58Data& b58) const
22952 // bool operator==(const CBase58Data& b58) const
22953 // bool operator<=(const CBase58Data& b58) const
22954 // bool operator>=(const CBase58Data& b58) const
22955 // bool operator< (const CBase58Data& b58) const
22956 // bool operator> (const CBase58Data& b58) const
22957
22958 // CBitcoinAddress
22959 // bool SetHash160(const uint160& hash160)
22960 // bool SetPubKey(const std::vector<unsigned char>& vchPubKey)
22961 // bool IsValid() const
22962 // CBitcoinAddress()
22963 // CBitcoinAddress(uint160 hash160In)
22964 // CBitcoinAddress(const std::vector<unsigned char>& vchPubKey)
22965 // CBitcoinAddress(const std::string& strAddress)
22966 // CBitcoinAddress(const char* pszAddress)
22967 // uint160 GetHash160() const
22968
22969 #define U(x) (reinterpret_cast<const unsigned char*>(x))
22970 static struct {
22971 const unsigned char *data;
22972 int size;
22973 } vstrIn[] = {
22974 {U(""), 0},
22975 {U("\x61"), 1},
22976 {U("\x62\x62\x62"), 3},
22977 {U("\x63\x63\x63"), 3},
22978 {U("\x73\x69\x6d\x70\x6c\x79\x20\x61\x20\x6c\x6f\x6e\x67\x20\x73\x74\x72\x69\x6e\x67"), 20},
22979 {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},
22980 {U("\x51\x6b\x6f\xcd\x0f"), 5},
22981 {U("\xbf\x4f\x89\x00\x1e\x67\x02\x74\xdd"), 9},
22982 {U("\x57\x2e\x47\x94"), 4},
22983 {U("\xec\xac\x89\xca\xd9\x39\x23\xc0\x23\x21"), 10},
22984 {U("\x10\xc8\x51\x1e"), 4},
22985 {U("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), 10},
22986 };
22987
22988 const char *vstrOut[] = {
22989 "",
22990 "2g",
22991 "a3gV",
22992 "aPEr",
22993 "2cFupjhnEsSn59qHXstmK2ffpLv2",
22994 "1NS17iag9jJgTHD1VXjvLCEnZuQ3rJDE9L",
22995 "ABnLTmg",
22996 "3SEo3LWLoPntC",
22997 "3EFU7m",
22998 "EJDM8drfXA6uyA",
22999 "Rt5zm",
23000 "1111111111"
23001 };
23002
23003 BOOST_AUTO_TEST_CASE(base58_EncodeBase58)
23004 {
23005 for (int i=0; i<sizeof(vstrIn)/sizeof(vstrIn[0]); i++)
23006 {
23007 BOOST_CHECK_EQUAL(EncodeBase58(vstrIn[i].data, vstrIn[i].data + vstrIn[i].size), vstrOut[i]);
23008 }
23009 }
23010
23011 BOOST_AUTO_TEST_CASE(base58_DecodeBase58)
23012 {
23013 std::vector<unsigned char> result;
23014 for (int i=0; i<sizeof(vstrIn)/sizeof(vstrIn[0]); i++)
23015 {
23016 std::vector<unsigned char> expected(vstrIn[i].data, vstrIn[i].data + vstrIn[i].size);
23017 BOOST_CHECK(DecodeBase58(vstrOut[i], result));
23018 BOOST_CHECK_EQUAL_COLLECTIONS(result.begin(), result.end(), expected.begin(), expected.end());
23019 }
23020 BOOST_CHECK(!DecodeBase58("invalid", result));
23021 }
23022
23023 BOOST_AUTO_TEST_SUITE_END()
23024