Improve output of test failures for unprintable characters
Show non-printable characters when comparing strings more clearly if the comparison fails, this is notably useful for strings containing NULs as they were previously completely lost.
This commit is contained in:
@@ -73,6 +73,32 @@ namespace Catch
|
|||||||
return wxString(ucr).ToStdString(wxConvUTF8);
|
return wxString(ucr).ToStdString(wxConvUTF8);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// While this conversion already works due to the existence of the stream
|
||||||
|
// insertion operator for wxString, define a custom one making it more
|
||||||
|
// obvious when strings containing non-printable characters differ.
|
||||||
|
template <>
|
||||||
|
struct StringMaker<wxString>
|
||||||
|
{
|
||||||
|
static std::string convert(const wxString& wxs)
|
||||||
|
{
|
||||||
|
std::string s;
|
||||||
|
s.reserve(wxs.length());
|
||||||
|
for ( wxString::const_iterator i = wxs.begin();
|
||||||
|
i != wxs.end();
|
||||||
|
++i )
|
||||||
|
{
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
if ( !iswprint(*i) )
|
||||||
|
s += wxString::Format("\\u%04X", *i).ToStdString();
|
||||||
|
else
|
||||||
|
#endif // wxUSE_UNICODE
|
||||||
|
s += *i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use a different namespace for our mock ups of the real declarations in
|
// Use a different namespace for our mock ups of the real declarations in
|
||||||
|
Reference in New Issue
Block a user