Вход:  Пароль:  
FreeSource: WINE/InterfaceTests ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |

Написание тестов для проверки существования (отсутствия) интерфейсов.


Часто при отладке программы появляются сообщения вида:
fixme:shdocvw:Web Browser_ Query Interface? (0x3199770)->({00000019–0000–0000-c000–000000000046} 0x32ed80) interface not supported


Возникают подозрения, что программа может не работать из за отсутствия данного интерфеса.
Чтобы убрать это сообщение необходимо проверить должен ли возвращаться интерфейс из этого места. И если нет, то изменить FIXME на TRACE о том, что интерфейс не поддерживается.

Написание теста на неподдерживаемый интерфейс

Изначально предполагаем что интерфейс не поддерживается.
В тестах для данной dll должен быть файл с названием объекта, откуда и запрашивается интерфейс. В данном случае это dlls/shdocvw/tests/webbrowser.c
Там должна быть функция test_QueryInterface, в которой и находятся тесты на неподдерживаемые интерфейсы.


Добавляемый тест выглядит следующим образом:

Написание теста на поддерживаемый интерфейс

Если тест показал, что интерфес всё же поддерживается. То придётся удалить этот тест, и добавить тест, показывающий, что интерфейс поддерживается.


Он будет выглядеть следующим образом (пример другого интерфейса, запрашиваемого из другого места):

Доработка Query Interface?

Если интерфейс не поддерживается, то добавляем в соответсвующую функцию вызова (в данном случае это :Web Browser_ Query Interface) в соответствующее место TRACE:


Если интерфейс всё-же поддерживается то добавляется (в данном случае в HTMLDocument_QueryInterface):


Это для начала. А вообще хорошо бы в этом местре реализовать правильный возврат интерфейса.
Например:


Страницы, ссылающиеся на данную: WINE


 
Файлы [Скрыть файлы/форму]
Комментариев нет. [Показать комментарии/форму]