diff options
author | chriseth <chris@ethereum.org> | 2017-02-24 22:42:52 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-24 22:42:52 +0800 |
commit | 673268a6f8345e9276764f13e105869f5be92adc (patch) | |
tree | 24fca84a746ec5b56d97070529212b1c76f114bb /test/libsolidity/SolidityEndToEndTest.cpp | |
parent | bec3c6fab6bf02aea5664be4423f45e98db22e8e (diff) | |
parent | 4d290e551c2d563671f9d56744883d3f3dff98ec (diff) | |
download | dexon-solidity-673268a6f8345e9276764f13e105869f5be92adc.tar.gz dexon-solidity-673268a6f8345e9276764f13e105869f5be92adc.tar.zst dexon-solidity-673268a6f8345e9276764f13e105869f5be92adc.zip |
Merge pull request #1651 from ethereum/transfer-method
Add address.transfer(value)
Diffstat (limited to 'test/libsolidity/SolidityEndToEndTest.cpp')
-rw-r--r-- | test/libsolidity/SolidityEndToEndTest.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index 68f8fbef..cb0cc168 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -1681,6 +1681,42 @@ BOOST_AUTO_TEST_CASE(send_ether) BOOST_CHECK_EQUAL(balanceAt(address), amount); } +BOOST_AUTO_TEST_CASE(transfer_ether) +{ + char const* sourceCode = R"( + contract A { + function A() payable {} + function a(address addr, uint amount) returns (uint) { + addr.transfer(amount); + return this.balance; + } + function b(address addr, uint amount) { + addr.transfer(amount); + } + } + + contract B { + } + + contract C { + function () payable { + throw; + } + } + )"; + compileAndRun(sourceCode, 0, "B"); + u160 const nonPayableRecipient = m_contractAddress; + compileAndRun(sourceCode, 0, "C"); + u160 const oogRecipient = m_contractAddress; + compileAndRun(sourceCode, 20, "A"); + u160 payableRecipient(23); + BOOST_CHECK(callContractFunction("a(address,uint256)", payableRecipient, 10) == encodeArgs(10)); + BOOST_CHECK_EQUAL(balanceAt(payableRecipient), 10); + BOOST_CHECK_EQUAL(balanceAt(m_contractAddress), 10); + BOOST_CHECK(callContractFunction("b(address,uint256)", nonPayableRecipient, 10) == encodeArgs()); + BOOST_CHECK(callContractFunction("b(address,uint256)", oogRecipient, 10) == encodeArgs()); +} + BOOST_AUTO_TEST_CASE(log0) { char const* sourceCode = R"( |