===Windows===
Примеры скриптов. Уберите пробелы внутри "% %"! Скрипты записывать в файл с расширением *.cmd.
Файлы с тестами называются 01, 02, 03, ... . Файлы с правильными ответами называются 01.a, 02.a, 03.a.
Запускаемая программа: ..\a.exe. Имена входных-выходных файлов sum.in-sum.out.
**Запустить программу на всех тестах, вывести на экран результат работы программы и правильный ответ**
%%
echo off
for % %f in (??) do echo TEST % %f & echo TEST % %f & copy % %f sum.in > nul & ..\a.exe & echo Output: & type sum.out & echo Correct: & type % %f.a
%%
**Запустить программу на всех тестах, сравнить ответ с правильным при помощи команды fc, остановиться на первом тесте с неправильным ответом**
%%
echo off
for % %f in (??) do echo TEST % %f & copy % %f sum.in > nul & ..\a.exe & fc /w % %f.a sum.out & if errorlevel 1 exit
%%
**Запустить программу на всех тестах, сравнить ответ с правильным при помощи check.exe, остановиться на первом тесте с неправильным ответом**
%%
echo off
for % %f in (??) do echo TEST % %f & copy % %f sum.in > nul & ..\a.exe & check.exe sum.in sum.out % %f.a & if errorlevel 2 exit
%%
**Пример чекера**
Чекер запускается из командной строки с тремя параметрами. Первый параметр - имя файла с входными данными, второй - имя файла с выводом программы, третий - имя файла с правильным ответом. Чекер возвращает 0, если ответ правильный, 2 - если ответ неправильный.
%%
#include <iostream>
#include <fstream>
using namespace std;
int main(int narg, char ** argv)
{
if (narg != 4)
{
cerr << "You must specify 3 args" << endl;
return 1;
}
ifstream input(argv[1]);
ifstream output(argv[2]);
ifstream correct(argv[3]);
int user_ans, correct_ans;
output >> user_ans;
correct >> correct_ans;
if (user_ans == correct_ans)
{
cout << "OK" << endl;
return 0;
}
else
{
cout << "WA" << endl;
return 2;
}
}
%%