Fixes missing alignment output in isoltest.

This commit is contained in:
Erik Kundt 2020-01-15 18:18:16 +01:00
parent 9d9a7ebe25
commit ae67cbde7d
2 changed files with 11 additions and 4 deletions

View File

@ -158,12 +158,15 @@ string BytesUtils::formatBoolean(bytes const& _bytes)
return os.str();
}
string BytesUtils::formatHex(bytes const& _bytes)
string BytesUtils::formatHex(bytes const& _bytes, bool _shorten)
{
soltestAssert(!_bytes.empty() && _bytes.size() <= 32, "");
u256 value = fromBigEndian<u256>(_bytes);
string output = toCompactHexWithPrefix(value);
return toCompactHexWithPrefix(value);
if (_shorten)
return output.substr(0, output.size() - countRightPaddedZeros(_bytes) * 2);
return output;
}
string BytesUtils::formatHexString(bytes const& _bytes)
@ -258,7 +261,7 @@ string BytesUtils::formatBytes(
os << formatBoolean(_bytes);
break;
case ABIType::Hex:
os << formatHex(_bytes);
os << formatHex(_bytes, _abiType.alignDeclared);
break;
case ABIType::HexString:
os << formatHexString(_bytes);
@ -271,6 +274,9 @@ string BytesUtils::formatBytes(
case ABIType::None:
break;
}
if (_abiType.alignDeclared)
return (_abiType.align == ABIType::AlignLeft ? "left(" : "right(") + os.str() + ")";
return os.str();
}

View File

@ -80,7 +80,8 @@ public:
/// Converts \param _bytes to a soltest-compliant and human-readable
/// string representation of a byte array which is assumed to hold
/// a hex value.
static std::string formatHex(bytes const& _bytes);
/// The _shorten flag is used to trim leading and trailing zeros.
static std::string formatHex(bytes const& _bytes, bool _shorten = false);
/// Converts \param _bytes to a soltest-compliant and human-readable
/// string representation of a byte array which is assumed to hold