MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
Oferecimentos anteriores

Testes com o SuSy

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 arq1.in, arq2.in, arq3.in,..., arqN.in. A cada um deles corresponde um arquivo de saída arq1.res, arq2.res, arq3.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.

Como utilizar os testes no seu computador

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 < arq1.in

Você pode redirecionar a saída para um arquivo arq<i>.out da seguinte maneira:

$ python3 lab01.py < arq1.in > arq1.out

O SuSy está configurado para comparar a saída do seu programa com o arquivo arq<i>.res utilizando o comando diff:

$ diff arq1.out arq1.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