unsigned char
출력 형식을 BOOST_CHECK_EQUAL_COLLECTIONS
으로 바꿀 수 있습니까?부호없는 문자가있는 BOOST_CHECK_EQUAL_COLLECTIONS는 불일치로 인쇄 할 수없는 문자를 출력합니다.
나는 부호없는 char 배열에 값을 검증하기 위해 Boost.Test 1.37.0을 사용하고 있습니다 :
// 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));
내가 불일치에 인쇄 할 수없는 문자를 얻을 : 나는 일시적으로 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
unsigned
배열을 사용하여 문자가 아닌 숫자를 인쇄 할 수 있습니다. 마찬가지로 result.Message
을 새로운 vector<unsigned>
에 복사하고 그에 대해 비교할 수 있습니다 :
vector<unsigned> result_message(result.Message, result.Message + result.Length);
끔찍하지는 않지만 가능한 경우 원본과 비교하는 것이 좋습니다.
내부적으로 BOOST_CHECK_EQUAL_COLLECTIONS
임시 stringstream
내가 할 수없는 액세스를 사용하지만, 그것은 나에 대한 ostream
서식을 궁금해 얻었다.
패싯과 로케일을 다루는 데 많은 경험이 없지만 개별적으로 사용할 수 있는지 궁금합니다. unsigned char
ASCII 대신 숫자로 인쇄 하시겠습니까? 놀랍게도 많은
좋은 생각이지만 패싯과 로케일은 잔인합니다. – mskfisher