aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-11-17 09:43:08 +0800
committerGitHub <noreply@github.com>2017-11-17 09:43:08 +0800
commit2b5ef80634c94a5cf27f3ce8a85eeb9d713f5ec3 (patch)
tree092a1703bf0d44b6eb7af6282b213c098f65ab84 /test
parent2927ce0bd43e7d6aa3ba8e13bd123225adf1c7e8 (diff)
parent53796c0fe8bfd6ff2707bd12dd3141169489f763 (diff)
downloaddexon-solidity-2b5ef80634c94a5cf27f3ce8a85eeb9d713f5ec3.tar
dexon-solidity-2b5ef80634c94a5cf27f3ce8a85eeb9d713f5ec3.tar.gz
dexon-solidity-2b5ef80634c94a5cf27f3ce8a85eeb9d713f5ec3.tar.bz2
dexon-solidity-2b5ef80634c94a5cf27f3ce8a85eeb9d713f5ec3.tar.lz
dexon-solidity-2b5ef80634c94a5cf27f3ce8a85eeb9d713f5ec3.tar.xz
dexon-solidity-2b5ef80634c94a5cf27f3ce8a85eeb9d713f5ec3.tar.zst
dexon-solidity-2b5ef80634c94a5cf27f3ce8a85eeb9d713f5ec3.zip
Merge pull request #3031 from wadeAlexC/develop
Improves checksum error message
Diffstat (limited to 'test')
-rw-r--r--test/libdevcore/Checksum.cpp34
-rw-r--r--test/libsolidity/SolidityNameAndTypeResolution.cpp21
2 files changed, 51 insertions, 4 deletions
diff --git a/test/libdevcore/Checksum.cpp b/test/libdevcore/Checksum.cpp
index 17a17d22..4eedbd99 100644
--- a/test/libdevcore/Checksum.cpp
+++ b/test/libdevcore/Checksum.cpp
@@ -19,6 +19,8 @@
*/
#include <libdevcore/CommonData.h>
+#include <libdevcore/Exceptions.h>
+
#include "../TestHelper.h"
@@ -31,6 +33,38 @@ namespace test
BOOST_AUTO_TEST_SUITE(Checksum)
+BOOST_AUTO_TEST_CASE(calculate)
+{
+ BOOST_CHECK(!getChecksummedAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed").empty());
+ BOOST_CHECK(!getChecksummedAddress("0x0123456789abcdefABCDEF0123456789abcdefAB").empty());
+ // too short
+ BOOST_CHECK_THROW(getChecksummedAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beae"), InvalidAddress);
+ BOOST_CHECK_THROW(getChecksummedAddress("5aaeb6053f3e94c9b9a09f33669435e7ef1beae"), InvalidAddress);
+ // too long
+ BOOST_CHECK_THROW(getChecksummedAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed1"), InvalidAddress);
+ BOOST_CHECK_THROW(getChecksummedAddress("5aaeb6053f3e94c9b9a09f33669435e7ef1beaed1"), InvalidAddress);
+ // non-hex character
+ BOOST_CHECK_THROW(getChecksummedAddress("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaeK"), InvalidAddress);
+
+ // the official test suite from EIP-55
+ vector<string> cases {
+ // all upper case
+ "0x52908400098527886E0F7030069857D2E4169EE7",
+ "0x8617E340B3D01FA5F11F306F4090FD50E238070D",
+ // all lower case
+ "0xde709f2102306220921060314715629080e2fb77",
+ "0x27b1fdb04752bbc536007a920d24acb045561c26",
+ // regular
+ "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
+ "0xfB6916095ca1df60bB79Ce92cE3Ea74c37c5d359",
+ "0xdbF03B407c01E7cD3CBea99509d93f8DDDC8C6FB",
+ "0xD1220A0cf47c7B9Be7A2E6BA89F429762e7b9aDb"
+ };
+
+ for (size_t i = 0; i < cases.size(); i++)
+ BOOST_REQUIRE_MESSAGE(getChecksummedAddress(cases[i]) == cases[i], cases[i]);
+}
+
BOOST_AUTO_TEST_CASE(regular)
{
BOOST_CHECK(passesAddressChecksum("0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed", true));
diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp
index 30624260..88ec58ee 100644
--- a/test/libsolidity/SolidityNameAndTypeResolution.cpp
+++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp
@@ -5766,7 +5766,7 @@ BOOST_AUTO_TEST_CASE(invalid_address_checksum)
}
}
)";
- CHECK_WARNING(text, "checksum");
+ CHECK_WARNING(text, "This looks like an address but has an invalid checksum.");
}
BOOST_AUTO_TEST_CASE(invalid_address_no_checksum)
@@ -5779,10 +5779,10 @@ BOOST_AUTO_TEST_CASE(invalid_address_no_checksum)
}
}
)";
- CHECK_WARNING(text, "checksum");
+ CHECK_WARNING(text, "This looks like an address but has an invalid checksum.");
}
-BOOST_AUTO_TEST_CASE(invalid_address_length)
+BOOST_AUTO_TEST_CASE(invalid_address_length_short)
{
char const* text = R"(
contract C {
@@ -5792,7 +5792,20 @@ BOOST_AUTO_TEST_CASE(invalid_address_length)
}
}
)";
- CHECK_WARNING(text, "checksum");
+ CHECK_WARNING(text, "This looks like an address but has an invalid checksum.");
+}
+
+BOOST_AUTO_TEST_CASE(invalid_address_length_long)
+{
+ char const* text = R"(
+ contract C {
+ function f() pure public {
+ address x = 0xFA0bFc97E48458494Ccd857e1A85DC91F7F0046E0;
+ x;
+ }
+ }
+ )";
+ CHECK_WARNING_ALLOW_MULTI(text, "This looks like an address but has an invalid checksum.");
}
BOOST_AUTO_TEST_CASE(address_test_for_bug_in_implementation)