[Wine-devel] ole32/tests: test for incorrect storage creation (eterbug #6846)

amorozov на etersoft.ru amorozov на etersoft.ru
Пт Фев 11 21:13:55 MSK 2011


В сообщении от 11 февраля 2011 roman написал(a):
>  ole32/tests: test for incorrect storage creation (eterbug #6846)

1. Не надо создавать файлы. Надо создать storage в памяти и сравнить с 
эталоном. Эталон - это то, что получается в Windows. Сравнивать надо после 
того, как выполнены все работающие со storage`ем функции. А не так как в 
текущей версии: создаём ILockBytes, что-то записываем в файл, и потом это 
сравниваем, а то, что в массив записала StgCreateDocfileOnILockBytes, нигде 
не используется.

2. Не надо сравнивать всё с помощью memcmp. Надо сравнить отдельные поля 
заголовка. Какие именно, надо разобраться. То, что у storage`ей, созданных в 
WINE и в Windows, различаются некоторые поля - не обязательно ошибка. Как 
минимум, надо протестировать то, что в начале записывется magic и что поле 
может обнулиться, если в массиве, на котором создаётся storage, оно равно 
0xff. Для последнего надо заполнить массив 0xff перед созданием ILockBytes.

3. memcmp возвращает 0, когда данные равны. И не нужны никакие присваивания r. 
Вместо вот этого:
    r = E_INVALIDARG;
    if( memcmp(pFileBuffer, pWordBuffer,512) )
	r = S_OK;
    ok( r!=S_OK, "Incorrect storage creation!\n");
надо было написать так:
    ok(!memcmp(pFileBuffer, pWordBuffer, 512),
     "Incorrect storage creation\n");

4. Надо проверять возвращаемые функциями значения:
    r = CreateILockBytesOnHGlobal( hMem, TRUE, &ilb );
    ok(r == S_OK, "CreateILockBytesOnHGlobal failed, hr=%08x\n", r);


Подробная информация о списке рассылки Wine-devel