unsigned char
の出力フォーマットを変更する方法はありますBOOST_CHECK_EQUAL_COLLECTIONS
か?
Boost.Test 1.37.0を使用して、unsignedchar配列の値を検証しています。
// result.Message is a fixed-size unsigned char array
// result.Length is the length of the data inside result.Message
const unsigned expected_message[] = { 3, 60, 43, 17 };
BOOST_CHECK_EQUAL_COLLECTIONS(
result.Message,
result.Message + result.Length,
expected_message,
expected_message + sizeof(expected_message) / sizeof(*expected_message) );
不一致で印刷できない文字が表示されます。
test_foo.cpp(117): error in "test_bar": check { result.Message, result.Message + result.Length } == { expected_message, expected_message + sizeof(expected_message) / sizeof(*expected_message) } failed.
Mismatch in a position 1: != 60
Mismatch in a position 2: < != 43
Mismatch in a position 3: != 17
一時的に配列に変更expected_message
して、unsigned
文字ではなく数字を出力するようにしました。同様にresult.Message
、新しい配列にコピーして、それとvector<unsigned>
比較することができます。
vector<unsigned> result_message(result.Message, result.Message + result.Length);
これはひどいことではありませんが、可能であればオリジナルと比較したいと思います。
内部的には、アクセスできないBOOST_CHECK_EQUAL_COLLECTIONS
一時的なものを使用していますが、フォーマットについて疑問に思いました。stringstream
ostream
unsigned char
ファセットやロケールを扱った経験はあまりありませんが、 ASCIIではなく数値として個々のを印刷するためにそれらを何らかの方法で使用できるかどうか疑問に思っています。