#webassembly
#webassembly
Вопрос:
Представьте, я хочу создать интерпретатор WebAssembly для определенной платформы. Я хочу убедиться, что он соответствует стандарту.
Как я могу проверить, работает ли мой интерпретатор WebAssembly в соответствии со стандартом?
Я нашел этот репозиторий с тем, что выглядит как автоматические тесты. Например, в этом файле они определяют материал, который они хотят протестировать вверху (все определения функций), а в конце файла есть куча assert_return
инструкций, которые, похоже, проверяют, правильно ли работают эти функции.
Теперь я мог бы использовать эти тесты для тестирования моего интерпретатора. Если все эти тесты пройдены, означает ли это, что мой интерпретатор соответствует стандарту?
Ответ №1:
Взгляните на webassemblyjs, проект, который включает реализацию интерпретатора.
Если вы посмотрите на код, вы можете увидеть, что он включает спецификацию WebAssembly в качестве подмодуля. Тесты спецификации выполняются через вспомогательный пакет.
Как вы заметили, тесты спецификации написаны в текстовом формате WebAssembly, однако они добавляют дополнительные инструкции, относящиеся к конкретным тестам, например assert_return
. Если вы посмотрите на helper-testsuite-runner
проект, связанный выше, вы можете увидеть, что он реализует эти специальные тесты конкретных команд.