diff options
-rw-r--r-- | test/IPCSocket.cpp | 14 | ||||
-rw-r--r-- | test/IPCSocket.h | 7 | ||||
-rw-r--r-- | test/libsolidity/SolidityEndToEndTest.cpp | 12 | ||||
-rw-r--r-- | test/libsolidity/SolidityExecutionFramework.cpp | 12 | ||||
-rw-r--r-- | test/libsolidity/SolidityExecutionFramework.h | 9 |
5 files changed, 42 insertions, 12 deletions
diff --git a/test/IPCSocket.cpp b/test/IPCSocket.cpp index f89cd335..2c1eb7a6 100644 --- a/test/IPCSocket.cpp +++ b/test/IPCSocket.cpp @@ -85,6 +85,15 @@ RPCSession::TransactionReceipt RPCSession::eth_getTransactionReceipt(string cons BOOST_REQUIRE(!result.isNull()); receipt.gasUsed = result["gasUsed"].asString(); receipt.contractAddress = result["contractAddress"].asString(); + for (auto const& log: result["logs"]) + { + LogEntry entry; + entry.address = log["address"].asString(); + entry.data = log["data"].asString(); + for (auto const& topic: log["topics"]) + entry.topics.push_back(topic.asString()); + receipt.logEntries.push_back(entry); + } return receipt; } @@ -174,10 +183,9 @@ Json::Value RPCSession::rpcCall(string const& _methodName, vector<string> const& request += "],\"id\":" + to_string(m_rpcSequence) + "}"; ++m_rpcSequence; + //cout << "Request: " << request << endl; string reply = m_ipcSocket.sendRequest(request); - - cout << "Request: " << request << endl; - cout << "Reply: " << reply << endl; + //cout << "Reply: " << reply << endl; Json::Value result; Json::Reader().parse(reply, result, false); diff --git a/test/IPCSocket.h b/test/IPCSocket.h index 9b4ab73e..bc641e88 100644 --- a/test/IPCSocket.h +++ b/test/IPCSocket.h @@ -59,10 +59,17 @@ public: std::string toJson() const; }; + struct LogEntry { + std::string address; + std::vector<std::string> topics; + std::string data; + }; + struct TransactionReceipt { std::string gasUsed; std::string contractAddress; + std::vector<LogEntry> logEntries; }; static RPCSession& instance(std::string const& _path); diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index 46677acb..3208cedf 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -1553,7 +1553,7 @@ BOOST_AUTO_TEST_CASE(log0) "}\n"; compileAndRun(sourceCode); callContractFunction("a()"); - BOOST_CHECK_EQUAL(m_logs.size(), 1); + 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(1))); BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 0); @@ -1568,7 +1568,7 @@ BOOST_AUTO_TEST_CASE(log1) "}\n"; compileAndRun(sourceCode); callContractFunction("a()"); - BOOST_CHECK_EQUAL(m_logs.size(), 1); + 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(1))); BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 1); @@ -1584,7 +1584,7 @@ BOOST_AUTO_TEST_CASE(log2) "}\n"; compileAndRun(sourceCode); callContractFunction("a()"); - BOOST_CHECK_EQUAL(m_logs.size(), 1); + 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(1))); BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 2); @@ -1601,7 +1601,7 @@ BOOST_AUTO_TEST_CASE(log3) "}\n"; compileAndRun(sourceCode); callContractFunction("a()"); - BOOST_CHECK_EQUAL(m_logs.size(), 1); + 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(1))); BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 3); @@ -1618,7 +1618,7 @@ BOOST_AUTO_TEST_CASE(log4) "}\n"; compileAndRun(sourceCode); callContractFunction("a()"); - BOOST_CHECK_EQUAL(m_logs.size(), 1); + 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(1))); BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 4); @@ -1634,7 +1634,7 @@ BOOST_AUTO_TEST_CASE(log_in_constructor) " }\n" "}\n"; compileAndRun(sourceCode); - BOOST_CHECK_EQUAL(m_logs.size(), 1); + 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(1))); BOOST_CHECK_EQUAL(m_logs[0].topics.size(), 1); diff --git a/test/libsolidity/SolidityExecutionFramework.cpp b/test/libsolidity/SolidityExecutionFramework.cpp index 5c8aff8d..871c0eba 100644 --- a/test/libsolidity/SolidityExecutionFramework.cpp +++ b/test/libsolidity/SolidityExecutionFramework.cpp @@ -39,7 +39,6 @@ ExecutionFramework::ExecutionFramework(): if (g_logVerbosity != -1) g_logVerbosity = 0; - cout << "New Framework" << endl; m_rpc.test_rewindToBlock(0); } @@ -69,9 +68,18 @@ void ExecutionFramework::sendMessage(bytes const& _data, bool _isCreation, u256 BOOST_REQUIRE(m_contractAddress); string code = m_rpc.eth_getCode(receipt.contractAddress, "latest"); BOOST_REQUIRE(code.size() > 2); - m_output = asBytes(code); + m_output = fromHex(code, WhenError::Throw); } m_gasUsed = u256(receipt.gasUsed); m_logs.clear(); + for (auto const& log: receipt.logEntries) + { + LogEntry entry; + entry.address = Address(log.address); + for (auto const& topic: log.topics) + entry.topics.push_back(h256(topic)); + entry.data = fromHex(log.data, WhenError::Throw); + m_logs.push_back(entry); + } } diff --git a/test/libsolidity/SolidityExecutionFramework.h b/test/libsolidity/SolidityExecutionFramework.h index 512f515f..8e266819 100644 --- a/test/libsolidity/SolidityExecutionFramework.h +++ b/test/libsolidity/SolidityExecutionFramework.h @@ -253,6 +253,13 @@ protected: RPCSession& m_rpc; + struct LogEntry + { + Address address; + std::vector<h256> topics; + bytes data; + }; + std::unique_ptr<eth::SealEngineFace> m_sealEngine; size_t m_optimizeRuns = 200; bool m_optimize = false; @@ -265,7 +272,7 @@ protected: u256 const m_gasPrice = 100 * eth::szabo; u256 const m_gas = 100000000; bytes m_output; - eth::LogEntries m_logs; + std::vector<LogEntry> m_logs; u256 m_gasUsed; }; |