aboutsummaryrefslogtreecommitdiffstats
path: root/test/libsolidity
diff options
context:
space:
mode:
authorchriseth <c@ethdev.com>2015-10-07 23:01:37 +0800
committerchriseth <c@ethdev.com>2015-10-07 23:01:37 +0800
commit68bf6e60c5869ab1cb862674de44e5ab4c79b5bc (patch)
tree0258f82a5930fd7c4aa62a63039d99b9807b46d8 /test/libsolidity
parent8644ad686674edfd2205fb9624521692362d6bfa (diff)
parentb6ddde9372c897c1eafc24ee16e3aa6aeec3f2f6 (diff)
downloaddexon-solidity-68bf6e60c5869ab1cb862674de44e5ab4c79b5bc.tar.gz
dexon-solidity-68bf6e60c5869ab1cb862674de44e5ab4c79b5bc.tar.zst
dexon-solidity-68bf6e60c5869ab1cb862674de44e5ab4c79b5bc.zip
Merge pull request #122 from chriseth/anonymousEventsWithFourIndexedParams
Allow four indexed arguments for anynomous events.
Diffstat (limited to 'test/libsolidity')
-rw-r--r--test/libsolidity/SolidityEndToEndTest.cpp10
-rw-r--r--test/libsolidity/SolidityNameAndTypeResolution.cpp18
2 files changed, 24 insertions, 4 deletions
diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp
index 56061b0b..c96ae14d 100644
--- a/test/libsolidity/SolidityEndToEndTest.cpp
+++ b/test/libsolidity/SolidityEndToEndTest.cpp
@@ -2400,9 +2400,9 @@ BOOST_AUTO_TEST_CASE(event_anonymous_with_topics)
{
char const* sourceCode = R"(
contract ClientReceipt {
- event Deposit(address indexed _from, bytes32 indexed _id, uint _value) anonymous;
+ event Deposit(address indexed _from, bytes32 indexed _id, uint indexed _value, uint indexed _value2, bytes32 data) anonymous;
function deposit(bytes32 _id, bool _manually) {
- Deposit(msg.sender, _id, msg.value);
+ Deposit(msg.sender, _id, msg.value, 2, "abc");
}
}
)";
@@ -2412,10 +2412,12 @@ BOOST_AUTO_TEST_CASE(event_anonymous_with_topics)
callContractFunctionWithValue("deposit(bytes32,bool)", value, id);
BOOST_REQUIRE_EQUAL(m_logs.size(), 1);
BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress);
- BOOST_CHECK_EQUAL(h256(m_logs[0].data), h256(u256(value)));
- BOOST_REQUIRE_EQUAL(m_logs[0].topics.size(), 2);
+ BOOST_CHECK(m_logs[0].data == encodeArgs("abc"));
+ BOOST_REQUIRE_EQUAL(m_logs[0].topics.size(), 4);
BOOST_CHECK_EQUAL(m_logs[0].topics[0], h256(m_sender));
BOOST_CHECK_EQUAL(m_logs[0].topics[1], h256(id));
+ BOOST_CHECK_EQUAL(m_logs[0].topics[2], h256(value));
+ BOOST_CHECK_EQUAL(m_logs[0].topics[3], h256(2));
}
BOOST_AUTO_TEST_CASE(event_lots_of_data)
diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp
index b4f16913..33e76ec9 100644
--- a/test/libsolidity/SolidityNameAndTypeResolution.cpp
+++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp
@@ -1107,6 +1107,24 @@ BOOST_AUTO_TEST_CASE(event_too_many_indexed)
SOLIDITY_CHECK_ERROR_TYPE(parseAndAnalyseReturnError(text), TypeError);
}
+BOOST_AUTO_TEST_CASE(anonymous_event_four_indexed)
+{
+ char const* text = R"(
+ contract c {
+ event e(uint indexed a, bytes3 indexed b, bool indexed c, uint indexed d) anonymous;
+ })";
+ ETH_TEST_CHECK_NO_THROW(parseAndAnalyse(text), "Parsing and Name Resolving Failed");
+}
+
+BOOST_AUTO_TEST_CASE(anonymous_event_too_many_indexed)
+{
+ char const* text = R"(
+ contract c {
+ event e(uint indexed a, bytes3 indexed b, bool indexed c, uint indexed d, uint indexed e) anonymous;
+ })";
+ SOLIDITY_CHECK_ERROR_TYPE(parseAndAnalyseReturnError(text), TypeError);
+}
+
BOOST_AUTO_TEST_CASE(event_call)
{
char const* text = R"(