19
19
*/
20
20
21
21
#include < libdevcore/CommonData.h>
22
+ #include < libdevcore/Exceptions.h>
23
+
22
24
23
25
#include " ../TestHelper.h"
24
26
@@ -31,6 +33,38 @@ namespace test
31
33
32
34
BOOST_AUTO_TEST_SUITE (Checksum)
33
35
36
+ BOOST_AUTO_TEST_CASE (calculate)
37
+ {
38
+ BOOST_CHECK (!getChecksummedAddress (" 0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed" ).empty ());
39
+ BOOST_CHECK (!getChecksummedAddress (" 0x0123456789abcdefABCDEF0123456789abcdefAB" ).empty ());
40
+ // too short
41
+ BOOST_CHECK_THROW (getChecksummedAddress (" 0x5aaeb6053f3e94c9b9a09f33669435e7ef1beae" ), InvalidAddress);
42
+ BOOST_CHECK_THROW (getChecksummedAddress (" 5aaeb6053f3e94c9b9a09f33669435e7ef1beae" ), InvalidAddress);
43
+ // too long
44
+ BOOST_CHECK_THROW (getChecksummedAddress (" 0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed1" ), InvalidAddress);
45
+ BOOST_CHECK_THROW (getChecksummedAddress (" 5aaeb6053f3e94c9b9a09f33669435e7ef1beaed1" ), InvalidAddress);
46
+ // non-hex character
47
+ BOOST_CHECK_THROW (getChecksummedAddress (" 0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaeK" ), InvalidAddress);
48
+
49
+ // the official test suite from EIP-55
50
+ vector<string> cases {
51
+ // all upper case
52
+ " 0x52908400098527886E0F7030069857D2E4169EE7" ,
53
+ " 0x8617E340B3D01FA5F11F306F4090FD50E238070D" ,
54
+ // all lower case
55
+ " 0xde709f2102306220921060314715629080e2fb77" ,
56
+ " 0x27b1fdb04752bbc536007a920d24acb045561c26" ,
57
+ // regular
58
+ " 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed" ,
59
+ " 0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359" ,
60
+ " 0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB" ,
61
+ " 0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb"
62
+ };
63
+
64
+ for (size_t i = 0 ; i < cases.size (); i++)
65
+ BOOST_REQUIRE_MESSAGE (getChecksummedAddress (cases[i]) == cases[i], cases[i]);
66
+ }
67
+
34
68
BOOST_AUTO_TEST_CASE (regular)
35
69
{
36
70
BOOST_CHECK (passesAddressChecksum (" 0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed" , true ));
0 commit comments