Print vector<char> and similar in hex notation on assert fail
This commit is contained in:
parent
0c7e7eb91d
commit
e0fee70d58
|
@ -169,7 +169,7 @@ template <typename T> bool operator==(const AsHexNumber<T> &lhs, const AsHexNumb
|
||||||
*/
|
*/
|
||||||
template <typename T> std::ostream &operator<<(std::ostream &out, const AsHexNumber<T> &value)
|
template <typename T> std::ostream &operator<<(std::ostream &out, const AsHexNumber<T> &value)
|
||||||
{
|
{
|
||||||
return out << std::hex << '0' << 'x' << unsigned(value.value) << std::dec;
|
return out << '0' << 'x' << std::hex << std::setfill('0') << std::setw(2) << unsigned(value.value) << std::dec;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -181,6 +181,26 @@ template <typename T> AsHexNumber<T> asHexNumber(const T &value)
|
||||||
return AsHexNumber<T>(value);
|
return AsHexNumber<T>(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Wraps a value to be printed using the hex system in the error case when asserted
|
||||||
|
* with cppunit (or similar test framework).
|
||||||
|
* \remarks Only affects integral types. Values of other types are printed as usual.
|
||||||
|
*/
|
||||||
|
template <typename T, Traits::EnableIf<std::is_integral<T>> * = nullptr> AsHexNumber<T> integralsAsHexNumber(const T &value)
|
||||||
|
{
|
||||||
|
return AsHexNumber<T>(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Wraps a value to be printed using the hex system in the error case when asserted
|
||||||
|
* with cppunit (or similar test framework).
|
||||||
|
* \remarks Only affects integral types. Values of other types are printed as usual.
|
||||||
|
*/
|
||||||
|
template <typename T, Traits::DisableIf<std::is_integral<T>> * = nullptr> const T &integralsAsHexNumber(const T &value)
|
||||||
|
{
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef TESTUTILS_ASSERT_EXEC
|
#ifndef TESTUTILS_ASSERT_EXEC
|
||||||
/*!
|
/*!
|
||||||
* \brief Asserts successful execution of application via TestApplication::execApp(). Output is stored in stdout and stderr.
|
* \brief Asserts successful execution of application via TestApplication::execApp(). Output is stored in stdout and stderr.
|
||||||
|
@ -207,7 +227,7 @@ inline std::ostream &operator<<(std::ostream &out, const Iteratable &iteratable)
|
||||||
out << '\n';
|
out << '\n';
|
||||||
std::size_t index = 0;
|
std::size_t index = 0;
|
||||||
for (const auto &item : iteratable) {
|
for (const auto &item : iteratable) {
|
||||||
out << std::setw(2) << index << ':' << ' ' << item << '\n';
|
out << std::setw(2) << index << ':' << ' ' << integralsAsHexNumber(item) << '\n';
|
||||||
++index;
|
++index;
|
||||||
}
|
}
|
||||||
return out;
|
return out;
|
||||||
|
|
Loading…
Reference in New Issue