Browse Source

Tidy and conformalise the toHex API.

cl-refactor
Gav Wood 10 years ago
parent
commit
7bef9ed491
  1. 9
      libdevcore/CommonData.h
  2. 22
      test/TestHelper.cpp
  3. 2
      test/fuzzTesting/createRandomVMTest.cpp
  4. 10
      test/libethereum/blockchain.cpp
  5. 26
      test/libevm/vm.cpp

9
libdevcore/CommonData.h

@ -152,11 +152,11 @@ inline bytes toCompactBigEndian(byte _val, unsigned _min = 0)
/// Convenience function for toBigEndian.
/// @returns a string just big enough to represent @a _val.
template <class _T>
inline std::string toCompactBigEndianString(_T _val)
inline std::string toCompactBigEndianString(_T _val, unsigned _min = 0)
{
int i = 0;
for (_T v = _val; v; ++i, v >>= 8) {}
std::string ret(i, '\0');
std::string ret(std::max<unsigned>(_min, i), '\0');
toBigEndian(_val, ret);
return ret;
}
@ -167,9 +167,10 @@ inline std::string toHex(u256 val, HexPrefix prefix = HexPrefix::DontAdd)
std::string str = toHex(toBigEndian(val));
return (prefix == HexPrefix::Add) ? "0x" + str : str;
}
inline std::string toCompactHex(u256 val, HexPrefix prefix = HexPrefix::DontAdd)
inline std::string toCompactHex(u256 val, HexPrefix prefix = HexPrefix::DontAdd, unsigned _min = 0)
{
std::string str = toHex(toCompactBigEndian(val, 1)); //1 means val=0 would be '0x00' instead of '0x'
std::string str = toHex(toCompactBigEndian(val, _min));
return (prefix == HexPrefix::Add) ? "0x" + str : str;
}

22
test/TestHelper.cpp

@ -137,7 +137,7 @@ json_spirit::mObject& ImportTest::makeAllFieldsHex(json_spirit::mObject& _o)
str = value.get_str();
else continue;
_o[key] = (str.substr(0, 2) == "0x") ? str : toCompactHex(toInt(str), HexPrefix::Add);
_o[key] = (str.substr(0, 2) == "0x") ? str : toCompactHex(toInt(str), HexPrefix::Add, 1);
}
return _o;
}
@ -355,15 +355,15 @@ void ImportTest::exportTest(bytes const& _output, State const& _statePost)
json_spirit::mObject fillJsonWithTransaction(Transaction _txn)
{
json_spirit::mObject txObject;
txObject["nonce"] = toCompactHex(_txn.nonce(), HexPrefix::Add);
txObject["nonce"] = toCompactHex(_txn.nonce(), HexPrefix::Add, 1);
txObject["data"] = toHex(_txn.data(), 2, HexPrefix::Add);
txObject["gasLimit"] = toCompactHex(_txn.gas(), HexPrefix::Add);
txObject["gasPrice"] = toCompactHex(_txn.gasPrice(), HexPrefix::Add);
txObject["r"] = toCompactHex(_txn.signature().r, HexPrefix::Add);
txObject["s"] = toCompactHex(_txn.signature().s, HexPrefix::Add);
txObject["v"] = toCompactHex(_txn.signature().v + 27, HexPrefix::Add);
txObject["gasLimit"] = toCompactHex(_txn.gas(), HexPrefix::Add, 1);
txObject["gasPrice"] = toCompactHex(_txn.gasPrice(), HexPrefix::Add, 1);
txObject["r"] = toCompactHex(_txn.signature().r, HexPrefix::Add, 1);
txObject["s"] = toCompactHex(_txn.signature().s, HexPrefix::Add, 1);
txObject["v"] = toCompactHex(_txn.signature().v + 27, HexPrefix::Add, 1);
txObject["to"] = _txn.isCreation() ? "" : toString(_txn.receiveAddress());
txObject["value"] = toCompactHex(_txn.value(), HexPrefix::Add);
txObject["value"] = toCompactHex(_txn.value(), HexPrefix::Add, 1);
return txObject;
}
@ -373,12 +373,12 @@ json_spirit::mObject fillJsonWithState(State _state)
for (auto const& a: _state.addresses())
{
json_spirit::mObject o;
o["balance"] = toCompactHex(_state.balance(a.first), HexPrefix::Add);
o["nonce"] = toCompactHex(_state.transactionsFrom(a.first), HexPrefix::Add);
o["balance"] = toCompactHex(_state.balance(a.first), HexPrefix::Add, 1);
o["nonce"] = toCompactHex(_state.transactionsFrom(a.first), HexPrefix::Add, 1);
{
json_spirit::mObject store;
for (auto const& s: _state.storage(a.first))
store[toCompactHex(s.first, HexPrefix::Add)] = toCompactHex(s.second, HexPrefix::Add);
store[toCompactHex(s.first, HexPrefix::Add, 1)] = toCompactHex(s.second, HexPrefix::Add, 1);
o["storage"] = store;
}
o["code"] = toHex(_state.code(a.first), 2, HexPrefix::Add);

2
test/fuzzTesting/createRandomVMTest.cpp

@ -201,7 +201,7 @@ void doMyTests(json_spirit::mValue& _v)
o["post"] = mValue(fev.exportState());
o["callcreates"] = fev.exportCallCreates();
o["out"] = toHex(output, 2, HexPrefix::Add);
o["gas"] = toCompactHex(gas, HexPrefix::Add);
o["gas"] = toCompactHex(gas, HexPrefix::Add, 1);
o["logs"] = test::exportLog(fev.sub.logs);
}
}

10
test/libethereum/blockchain.cpp

@ -635,11 +635,11 @@ mObject writeBlockHeaderToJson(mObject& _o, BlockInfo const& _bi)
_o["transactionsTrie"] = toString(_bi.transactionsRoot);
_o["receiptTrie"] = toString(_bi.receiptsRoot);
_o["bloom"] = toString(_bi.logBloom);
_o["difficulty"] = toCompactHex(_bi.difficulty, HexPrefix::Add);
_o["number"] = toCompactHex(_bi.number, HexPrefix::Add);
_o["gasLimit"] = toCompactHex(_bi.gasLimit, HexPrefix::Add);
_o["gasUsed"] = toCompactHex(_bi.gasUsed, HexPrefix::Add);
_o["timestamp"] = toCompactHex(_bi.timestamp, HexPrefix::Add);
_o["difficulty"] = toCompactHex(_bi.difficulty, HexPrefix::Add, 1);
_o["number"] = toCompactHex(_bi.number, HexPrefix::Add, 1);
_o["gasLimit"] = toCompactHex(_bi.gasLimit, HexPrefix::Add, 1);
_o["gasUsed"] = toCompactHex(_bi.gasUsed, HexPrefix::Add, 1);
_o["timestamp"] = toCompactHex(_bi.timestamp, HexPrefix::Add, 1);
_o["extraData"] = toHex(_bi.extraData, 2, HexPrefix::Add);
_o["mixHash"] = toString(_bi.mixHash);
_o["nonce"] = toString(_bi.nonce);

26
test/libevm/vm.cpp

@ -87,11 +87,11 @@ mObject FakeExtVM::exportEnv()
{
mObject ret;
ret["previousHash"] = toString(currentBlock.parentHash);
ret["currentDifficulty"] = toCompactHex(currentBlock.difficulty, HexPrefix::Add);
ret["currentTimestamp"] = toCompactHex(currentBlock.timestamp, HexPrefix::Add);
ret["currentDifficulty"] = toCompactHex(currentBlock.difficulty, HexPrefix::Add, 1);
ret["currentTimestamp"] = toCompactHex(currentBlock.timestamp, HexPrefix::Add, 1);
ret["currentCoinbase"] = toString(currentBlock.coinbaseAddress);
ret["currentNumber"] = toCompactHex(currentBlock.number, HexPrefix::Add);
ret["currentGasLimit"] = toCompactHex(currentBlock.gasLimit, HexPrefix::Add);
ret["currentNumber"] = toCompactHex(currentBlock.number, HexPrefix::Add, 1);
ret["currentGasLimit"] = toCompactHex(currentBlock.gasLimit, HexPrefix::Add, 1);
return ret;
}
@ -120,12 +120,12 @@ mObject FakeExtVM::exportState()
for (auto const& a: addresses)
{
mObject o;
o["balance"] = toCompactHex(get<0>(a.second), HexPrefix::Add);
o["nonce"] = toCompactHex(get<1>(a.second), HexPrefix::Add);
o["balance"] = toCompactHex(get<0>(a.second), HexPrefix::Add, 1);
o["nonce"] = toCompactHex(get<1>(a.second), HexPrefix::Add, 1);
{
mObject store;
for (auto const& s: get<2>(a.second))
store[toCompactHex(s.first, HexPrefix::Add)] = toCompactHex(s.second, HexPrefix::Add);
store[toCompactHex(s.first, HexPrefix::Add, 1)] = toCompactHex(s.second, HexPrefix::Add, 1);
o["storage"] = store;
}
o["code"] = toHex(get<3>(a.second), 2, HexPrefix::Add);
@ -161,9 +161,9 @@ mObject FakeExtVM::exportExec()
ret["address"] = toString(myAddress);
ret["caller"] = toString(caller);
ret["origin"] = toString(origin);
ret["value"] = toCompactHex(value, HexPrefix::Add);
ret["gasPrice"] = toCompactHex(gasPrice, HexPrefix::Add);
ret["gas"] = toCompactHex(gas, HexPrefix::Add);
ret["value"] = toCompactHex(value, HexPrefix::Add, 1);
ret["gasPrice"] = toCompactHex(gasPrice, HexPrefix::Add, 1);
ret["gas"] = toCompactHex(gas, HexPrefix::Add, 1);
ret["data"] = toHex(data, 2, HexPrefix::Add);
ret["code"] = toHex(code, 2, HexPrefix::Add);
return ret;
@ -207,8 +207,8 @@ mArray FakeExtVM::exportCallCreates()
{
mObject o;
o["destination"] = tx.isCreation() ? "" : toString(tx.receiveAddress());
o["gasLimit"] = toCompactHex(tx.gas(), HexPrefix::Add);
o["value"] = toCompactHex(tx.value(), HexPrefix::Add);
o["gasLimit"] = toCompactHex(tx.gas(), HexPrefix::Add, 1);
o["value"] = toCompactHex(tx.value(), HexPrefix::Add, 1);
o["data"] = toHex(tx.data(), 2, HexPrefix::Add);
ret.push_back(o);
}
@ -389,7 +389,7 @@ void doVMTests(json_spirit::mValue& v, bool _fillin)
o["callcreates"] = fev.exportCallCreates();
o["out"] = toHex(output, 2, HexPrefix::Add);
o["gas"] = toCompactHex(gas, HexPrefix::Add);
o["gas"] = toCompactHex(gas, HexPrefix::Add, 1);
o["logs"] = exportLog(fev.sub.logs);
}
}

Loading…
Cancel
Save