2009-06-13 22 views
0

ファイル名が一致する* .inファイルと一連の* .solnファイルがあります。 * .inファイルを入力として使用してプログラムを実行し、出力を* .solnファイルにあるものと比較したいとします。これについて最善の方法は何でしょうか?私は3つのオプションが考えられます。入力ファイルと出力ソリューションでテストするためのスクリプト

  1. Javaでドライバを作成して、フォルダ内のファイルを一覧表示し、プログラムを実行して比較します。これは難しく困難です。
  2. これを行うためのbashスクリプトを作成します。どうやって?
  3. これを行うためのPythonスクリプトを作成しますか?

答えて

0

私はbashの解決策に行きます。また、あなたがやっていることがテストだとすれば、私はいつもmyprogramの出力を保存して、失敗があればそれを比較する出力を常に持つようにします。

#!/bin/bash 

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

レポートの必要に応じてチェックや終了ステータスなどを追加する。

0

プログラムが存在する場合、私はbashスクリプトが最善の策だと思っています。ベースで ごSOLNファイルを右命名されている場合は、

のようなループのいくつかの種類のファイルについては、* .soln DO MYPROGRAM> new_master_ hostは$ファイル のdiff $ファイルnew_master_ hostは$ファイル もちろん

を行って、あなたdiffの終了コードを確認することができ、 はテストレポートを作成するために様々なことを行います。 。 。

これは私にとっては最も簡単です。 。 。

Karl

0

これは主に、最小限のロジックでファイルシステムを使用する必要がある問題です。 Bashはそのような問題のために悪い選択ではありません。それが判明すれば、単に同等性を比較するよりも複雑なことをしたいと思っています。Pythonはより魅力的な選択肢になります。 Javaは、このような使い捨てスクリプトのための良い選択のようには見えません。

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 

未テスト:

基本bashの実装は、次のようになります。

関連する問題