Я пишу некоторые модульные тесты, которые будут проверять нашу обработку различных ресурсов, которые используют другие наборы символов, кроме обычного латинского алфавита: кириллица, иврит и т. Д.
Проблема в том, что я не могу найти способ встроить ожидания в исходный файл теста: вот пример того, что я пытаюсь сделать ...
///
/// Protected: TestGetHebrewConfigString
///
void CPrIniFileReaderTest::TestGetHebrewConfigString()
{
prwstring strHebrewTestFilePath = GetTestFilePath( strHebrewTestFileName );
CPrIniFileReader prIniListReader( strHebrewTestFilePath.c_str() );
prIniListReader.SetCurrentSection( strHebrewSubSection );
CPPUNIT_ASSERT( prIniListReader.GetConfigString( L"דונדארןמע" ) == L"דונהשךוק") );
}
Это просто не работает. Ранее я работал над этим, используя макрос, который вызывает подпрограмму для преобразования узкой строки в широкую (в наших приложениях мы используем towstring повсеместно, так что это существующий код)
#define UNICODE_CONSTANT( CONSTANT ) towstring( CONSTANT )
wstring towstring( LPCSTR lpszValue )
{
wostringstream os;
os << lpszValue;
return os.str();
}
Утверждение в тесте выше стало:
CPPUNIT_ASSERT( prIniListReader.GetConfigString( UNICODE_CONSTANT( "דונדארןמע" ) ) == UNICODE_CONSTANT( "דונהשךוק" ) );
Это работало нормально на OS X, но теперь я портирую на linux и обнаруживаю, что все тесты проваливаются: все это выглядит довольно хакерским. Может кто-нибудь сказать мне, если у них есть более хорошее решение этой проблемы?