Libchecker:Структура проверяющей программы

From EjudgeWiki
Revision as of 15:35, 1 December 2006 by Cher (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Библиотека представляет собой каркас (framework), в который вставляются необходимые действия по проверке результата. Библиотека определяет функцию main, то есть при старте проверяющей программы управление получает модуль инициализации библиотеки libchecker.

Вместо функции main проверяющая программа должна определить функцию checker_main с прототипом, таким же как у main. После инициализации библиотеки libchecker будет вызвана функция checker_main основной части кода проверяющей программы. Таким образом, функция checker_main проверяющей программы играет роль функции main обычной программы на C или C++.

Если проверяющая программа сама определяет функцию main и не использует функций и переменных, предоставляемых библиотекой libchecker, такая программа может безопасно линковаться с библиотекой, и библиотека никаким образом не повлияет на работу программы. То есть даже автономные проверяющие программы могут безопасно линковаться с библиотекой libchecker.

Простейший случай проверяющей программы

В самом простом случае проверяющая программа требует входной файл и результат работы тестируемой программы на входном файле. Проверяющая программа сама вычисляет правильный ответ и сравнивает его с ответом, выданным тестируемой программой. Проверяющая программа тогда может выглядеть примерно следующим образом:

Использование файлов эталонного ответа

Использование файлов дополнительной информации о тесте

Использование подготовленного рабочего каталоге

Сочетание режимов использования