[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