From 2dfe5b1517ef557b13d5b56878cdcf7fe18e2699 Mon Sep 17 00:00:00 2001 From: Marek Kotewicz Date: Fri, 9 Jan 2015 16:12:56 +0100 Subject: [PATCH] web3.sha3 test --- jsonrpc.cpp | 21 ++++++++++++++++++++- webthreestubclient.h | 10 ++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/jsonrpc.cpp b/jsonrpc.cpp index eed54ed8f..ff83ae195 100644 --- a/jsonrpc.cpp +++ b/jsonrpc.cpp @@ -22,7 +22,7 @@ // @debris disabled as tests fail with: // unknown location(0): fatal error in "jsonrpc_setMining": std::exception: Exception -32003 : Client connector error: : libcurl error: 28 // /home/gav/Eth/cpp-ethereum/test/jsonrpc.cpp(169): last checkpoint -#if ETH_JSONRPC && 0 +#if ETH_JSONRPC && 1 #include #include @@ -74,6 +74,13 @@ struct Setup } }; +string fromAscii(string _s) +{ + bytes b = asBytes(_s); + b.resize(max(b.size(), 32)); + return "0x" + toHex(b); +} + BOOST_FIXTURE_TEST_SUITE(environment, Setup) BOOST_AUTO_TEST_CASE(jsonrpc_defaultBlock) @@ -312,6 +319,18 @@ BOOST_AUTO_TEST_CASE(contract_storage) } } +BOOST_AUTO_TEST_CASE(sha3) +{ + cnote << "Testing jsonrpc sha3..."; + string testString = "multiply(uint256)"; + h256 expected = dev::sha3(testString); + + auto hexValue = fromAscii(testString); + string result = jsonrpcClient->web3_sha3(hexValue); + BOOST_CHECK_EQUAL(toJS(expected), result); + BOOST_CHECK_EQUAL("0xc6888fa159d67f77c2f3d7a402e199802766bd7e8d4d1ecd2274fc920265d56a", result); +} + BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END() diff --git a/webthreestubclient.h b/webthreestubclient.h index 9b36c3644..6a82263d0 100644 --- a/webthreestubclient.h +++ b/webthreestubclient.h @@ -12,6 +12,16 @@ class WebThreeStubClient : public jsonrpc::Client public: WebThreeStubClient(jsonrpc::IClientConnector &conn) : jsonrpc::Client(conn) {} + std::string web3_sha3(const std::string& param1) throw (jsonrpc::JsonRpcException) + { + Json::Value p; + p.append(param1); + Json::Value result = this->CallMethod("web3_sha3",p); + if (result.isString()) + return result.asString(); + else + throw jsonrpc::JsonRpcException(jsonrpc::Errors::ERROR_CLIENT_INVALID_RESPONSE, result.toStyledString()); + } std::string eth_coinbase() throw (jsonrpc::JsonRpcException) { Json::Value p;