Randajad, Приведу пример текущего куска кода из своих юнит-тестов, где будет видна эта зависимость.
Код | struct Correct32Fixture { Correct32Fixture() : outputfile( string(OUTPUT_FILES_DIR) + string("Correct32.bin") ) { string sourcefile( string(TEST_SAMPLES_DIR) + string("Correct32.bin") );
std::remove( outputfile.c_str() ); copy_file( path(sourcefile), path(outputfile) );
fileRaw = new fstream( outputfile.c_str(), ios::in | ios::out | ios::ate | ios::binary ); filePtr = InOutStreamPtr( fileRaw ); templateImg.setStream( filePtr ); templateImg.read(); } ~Correct32Fixture() { if(fileRaw->is_open() ) { fileRaw->close(); } std::remove( outputfile.c_str() ); } string outputfile; fstream* fileRaw; InOutStreamPtr filePtr; // InOutStreamPtr это boost::shared_ptr<std::iostream> CustomImage32 templateImg; };
BOOST_FIXTURE_TEST_CASE( testSuperHeaderChanghing, Correct32Fixture ) { BOOST_REQUIRE( templateImg.SuperHeader().boundary_field1 == 0x90 ); BOOST_REQUIRE( templateImg.SuperHeader().boundary_field2[9] == 0 );
// Arrange templateImg.SuperHeader().boundary_field1 = 0xE9; templateImg.SuperHeader().boundary_field2[9] = 0xE8E9; templateImg.write();
// Act fileRaw->close(); fstream* fileRaw2 = new fstream( outputfile.c_str(), ios::in | ios::ate | ios::binary ); InOutStreamPtr filePtr2( fileRaw2 ); CustomImage32 checkImg( filePtr2 );
//Assert BOOST_CHECK( checkImg.SuperHeader().boundary_field = 0xE9 ); BOOST_CHECK( checkImg.SuperHeader().boundary_field[9] = 0xE8E9 ); }
|
Цель этого тест-кейса проста: проверить что класс CustomImage32 умеет корректно записывать измененные значение в хидере. Для этого я копирую эталонный файл, потом эту копию открываю по чтению\записи, далее присваиваю новые значения в его хидер, сохраняю и через новые объекты читаю эти записанные значения. Ожидаю что записываемое равно прочитанному.
Добавлено через 2 минуты и 41 секунду Кстати, если есть Enhancement-предложения по моему коду буду очень рад ) |