Скрипт для тестирования с входными файлами и выходными решениями - PullRequest
0 голосов
/ 14 июня 2009

У меня есть набор файлов * .in и набор файлов * .soln с соответствующими именами файлов. Я хотел бы запустить мою программу с файлом * .in в качестве входных данных и сравнить выходные данные с найденными в файлах * .soln. Каков будет лучший способ пойти по этому поводу? Я могу придумать 3 варианта.

  1. Напишите какой-нибудь драйвер на Java, чтобы вывести список файлов в папке, запустить программу и сравнить. Это было бы тяжело и сложно.
  2. Напишите bash-скрипт для этого. Как?
  3. Написать скрипт Python для этого?

Ответы [ 3 ]

0 голосов
/ 14 июня 2009

Это в первую очередь проблема, которая требует использования файловой системы с минимальной логикой. Баш не плохой выбор для таких проблем. Если оказывается, что вы хотите сделать что-то более сложное, чем просто сравнение на равенство, Python становится более привлекательным выбором. Java не кажется хорошим выбором для одноразового скрипта, такого как этот.

Базовая реализация bash может выглядеть примерно так:

cd dir_with_files

program=your_program
input_ext=".in"
compare_to_ext=".soIn"

for file in *$from_extension; do 
  diff <("$program" "$i") "${file:0:$((${#file}-3))}$compare_to_ext"
done

Непроверенные.

0 голосов
/ 14 июня 2009

Я бы выбрал решение для bash. Также, учитывая то, что вы выполняете тест, я всегда сохранял бы вывод myprogram, чтобы в случае сбоев вы всегда имели выход для его сравнения.

#!/bin/bash

for infile in *.in; do
    basename=${infile%.*}
    myprogram $infile > $basename.output
    diff $basename.output $basename.soln
done

Добавление статусов проверки или выхода и т. Д. В соответствии с требованиями вашего отчета.

0 голосов
/ 14 июня 2009

Если программа существует, я подозреваю, что bash-скрипт - лучший выбор. Если ваши soln-файлы названы правильно, какой-то цикл вроде

для файла в базе * .soln делать myprogram> new_ $ file diff $ file new_ $ file сделано

Конечно, вы можете проверить код выхода diff и делать различные другие вещи, чтобы создать протокол испытаний. , .

Это выглядит проще всего для меня. , .

Karl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...