diff options
author | Lu Guanqun <guanqun.lu@gmail.com> | 2015-02-05 00:58:20 +0800 |
---|---|---|
committer | Lu Guanqun <guanqun.lu@gmail.com> | 2015-02-05 01:01:41 +0800 |
commit | 7eece799f2aefa521d0cee7e7773e8c4235a0b1c (patch) | |
tree | a01a43a2dfca36187b0256908ab4d1d28ce615a3 | |
parent | bade3d98e91fe3e3a20dafba61a975a5638554b7 (diff) | |
download | dexon-solidity-7eece799f2aefa521d0cee7e7773e8c4235a0b1c.tar dexon-solidity-7eece799f2aefa521d0cee7e7773e8c4235a0b1c.tar.gz dexon-solidity-7eece799f2aefa521d0cee7e7773e8c4235a0b1c.tar.bz2 dexon-solidity-7eece799f2aefa521d0cee7e7773e8c4235a0b1c.tar.lz dexon-solidity-7eece799f2aefa521d0cee7e7773e8c4235a0b1c.tar.xz dexon-solidity-7eece799f2aefa521d0cee7e7773e8c4235a0b1c.tar.zst dexon-solidity-7eece799f2aefa521d0cee7e7773e8c4235a0b1c.zip |
add several type error test cases
-rw-r--r-- | SolidityNameAndTypeResolution.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/SolidityNameAndTypeResolution.cpp b/SolidityNameAndTypeResolution.cpp index 1a087592..ae6c374b 100644 --- a/SolidityNameAndTypeResolution.cpp +++ b/SolidityNameAndTypeResolution.cpp @@ -868,6 +868,42 @@ BOOST_AUTO_TEST_CASE(access_to_protected_state_variable) BOOST_CHECK_NO_THROW(parseTextAndResolveNames(text)); } +BOOST_AUTO_TEST_CASE(error_count_in_named_args) +{ + char const* sourceCode = "contract test {\n" + " function a(uint a, uint b) returns (uint r) { r = a + b; }\n" + " function b() returns (uint r) { r = a({a: 1}); }\n" + "}\n"; + BOOST_CHECK_THROW(parseTextAndResolveNames(sourceCode), TypeError); +} + +BOOST_AUTO_TEST_CASE(empty_in_named_args) +{ + char const* sourceCode = "contract test {\n" + " function a(uint a, uint b) returns (uint r) { r = a + b; }\n" + " function b() returns (uint r) { r = a({}); }\n" + "}\n"; + BOOST_CHECK_THROW(parseTextAndResolveNames(sourceCode), TypeError); +} + +BOOST_AUTO_TEST_CASE(duplicate_parameter_names_in_named_args) +{ + char const* sourceCode = "contract test {\n" + " function a(uint a, uint b) returns (uint r) { r = a + b; }\n" + " function b() returns (uint r) { r = a({a: 1, a: 2}); }\n" + "}\n"; + BOOST_CHECK_THROW(parseTextAndResolveNames(sourceCode), TypeError); +} + +BOOST_AUTO_TEST_CASE(invalid_parameter_names_in_named_args) +{ + char const* sourceCode = "contract test {\n" + " function a(uint a, uint b) returns (uint r) { r = a + b; }\n" + " function b() returns (uint r) { r = a({a: 1, c: 2}); }\n" + "}\n"; + BOOST_CHECK_THROW(parseTextAndResolveNames(sourceCode), TypeError); +} + BOOST_AUTO_TEST_SUITE_END() } |