diff options
author | CJentzsch <jentzsch.software@gmail.com> | 2015-08-06 06:31:35 +0800 |
---|---|---|
committer | CJentzsch <jentzsch.software@gmail.com> | 2015-08-06 06:31:35 +0800 |
commit | 228fdf633d9e6589eb6769221ebb15eb31099407 (patch) | |
tree | 7bc52e7deca4238b8b4f19341de781e6129868e2 | |
parent | 4626890913b9639c886544cd38863b3ecd116ddc (diff) | |
download | dexon-solidity-228fdf633d9e6589eb6769221ebb15eb31099407.tar.gz dexon-solidity-228fdf633d9e6589eb6769221ebb15eb31099407.tar.zst dexon-solidity-228fdf633d9e6589eb6769221ebb15eb31099407.zip |
readd solidity tests
-rw-r--r-- | libsolidity/SolidityEndToEndTest.cpp | 25 | ||||
-rw-r--r-- | libsolidity/SolidityNameAndTypeResolution.cpp | 17 |
2 files changed, 42 insertions, 0 deletions
diff --git a/libsolidity/SolidityEndToEndTest.cpp b/libsolidity/SolidityEndToEndTest.cpp index fdffed1e..ae2fc6dc 100644 --- a/libsolidity/SolidityEndToEndTest.cpp +++ b/libsolidity/SolidityEndToEndTest.cpp @@ -5103,6 +5103,31 @@ BOOST_AUTO_TEST_CASE(memory_structs_with_mappings) BOOST_CHECK(callContractFunction("f()") == encodeArgs(u256(0))); } +BOOST_AUTO_TEST_CASE(string_bytes_conversion) +{ + char const* sourceCode = R"( + contract Test { + string s; + bytes b; + function f(string _s, uint n) returns (byte) { + b = bytes(_s); + s = string(b); + return bytes(s)[n]; + } + function l() returns (uint) { return bytes(s).length; } + } + )"; + compileAndRun(sourceCode, 0, "Test"); + BOOST_CHECK(callContractFunction( + "f(string,uint256)", + u256(0x40), + u256(2), + u256(6), + string("abcdef") + ) == encodeArgs("c")); + BOOST_CHECK(callContractFunction("l()") == encodeArgs(u256(6))); +} + BOOST_AUTO_TEST_CASE(string_as_mapping_key) { char const* sourceCode = R"( diff --git a/libsolidity/SolidityNameAndTypeResolution.cpp b/libsolidity/SolidityNameAndTypeResolution.cpp index cfc43df9..6b116f25 100644 --- a/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/libsolidity/SolidityNameAndTypeResolution.cpp @@ -2149,6 +2149,23 @@ BOOST_AUTO_TEST_CASE(memory_structs_with_mappings) BOOST_CHECK_THROW(parseTextAndResolveNames(text), TypeError); } +BOOST_AUTO_TEST_CASE(string_bytes_conversion) +{ + char const* text = R"( + contract Test { + string s; + bytes b; + function h(string _s) external { bytes(_s).length; } + function i(string _s) internal { bytes(_s).length; } + function j() internal { bytes(s).length; } + function k(bytes _b) external { string(_b); } + function l(bytes _b) internal { string(_b); } + function m() internal { string(b); } + } + )"; + BOOST_CHECK_NO_THROW(parseTextAndResolveNames(text)); +} + BOOST_AUTO_TEST_SUITE_END() } |