O SuSy (Submission and Testing System for Student Programs) é uma ferramenta para submissão e testes de programas, criada e desenvolvida pelo Prof. Tomasz Kowaltowski.
No SuSy, para cada tarefa, criamos um conjunto de testes com
arquivos de entrada arq01.in, arq02.in, arq03.in,...,
arqN.in
. A cada um deles corresponde um arquivo de
saída arq01.res, arq02.res, arq03.res,..., arqN.res
.
O seu programa passará em um teste i
apenas se a
saída for exatamente igual a do arquivo de
resposta arq<i>.res
. Este é o desafio!
Na página de submissão de cada tarefa há um link Arquivos auxiliares contendo todos estes testes e mais dois programas em Python. A ideia é que você utilize estes arquivos no seu computador, enquanto desenvolve o programa e só submeta para o SuSy quando o programa estiver pronto.
Suponha que você está testando o
arquivo lab01.py
. Dado um dos
arquivos arq<i>.in
, você pode utilizá-lo
como entrada na linha de comando da seguinte forma:
$ python3 lab01.py < arq01.in
Você pode redirecionar a saída para um arquivo arq<i>.out
da seguinte maneira:
$ python3 lab01.py < arq01.in > arq01.out
O SuSy está configurado para comparar a saída do seu programa
com o arquivo arq<i>.res
utilizando o comando diff
:
$ diff arq01.out arq01.res
Uma saída vazia indicará que o programa executou corretamente no seu computador. Caso contrário, observe as diferenças apontadas e depure seu programa. Por exemplo, um erro discutido no roteiro da tarefa 00 foi:
1c1
< Oi, mundo!!!!
---
> Oi, mundo!
Estão disponíveis dois scripts Python para ajudar a
fazer todos os testes abertos:
o executa-testes.py para ambiente
GNU/Linux e o
executa-testes-windows.py para
ambiente Windows. Estes scripts supõem que o
arquivo lab<x>.py
, os arquivos de
entrada arq<i>.in
e os arquivos com
resultado arq<i>.res
estão todos no mesmo
diretório. O uso é
$ python3 executa-testes.py lab01.py
ou
> py executa-testes-windows.py lab01.py
A saída desejada será algo como:
Teste 1 : resultado correto
Teste 2 : resultado correto
Teste 3 : resultado correto
Teste 4 : resultado correto
Teste 5 : resultado correto