Я пишу некоторые модульные тесты, которые будут проверять нашу обработку различных ресурсов, которые используют другие наборы символов, помимо обычного латинского алфавита: кириллица, иврит и т.д.
Проблема заключается в том, что я не могу найти способ встраивания ожиданий в исходный файл теста: вот пример того, что я пытаюсь сделать...
///
/// Protected: TestGetHebrewConfigString
///
void CPrIniFileReaderTest::TestGetHebrewConfigString()
{
prwstring strHebrewTestFilePath = GetTestFilePath( strHebrewTestFileName );
CPrIniFileReader prIniListReader( strHebrewTestFilePath.c_str() );
prIniListReader.SetCurrentSection( strHebrewSubSection );
CPPUNIT_ASSERT( prIniListReader.GetConfigString( L"דונדארןמע" ) == L"דונהשךוק") );
}
Это довольно просто не работает. Раньше я работал над этим с помощью макроса, который вызывает подпрограмму, чтобы преобразовать узкую строку в широкую строку (мы используем буксировку по всему месту в наших приложениях, так что существующий код)
#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, и я обнаружил, что тесты все проваливаются: все это тоже довольно хаки. Может ли кто-нибудь сказать мне, есть ли у них лучшее решение этой проблемы?