Quando escrevemos programas que fazem leitura ou escrita de dados (por exemplo, utilizando scanf
e/ou printf
), é comum utilizarmos o que chamamos de redirecionamento.
Suponha, por exemplo, que o seu programa labXXy.c
foi compilado gerando um executável com nome labXXy
. Considere que existe um arquivo texto chamado arq01.in
com os valores que seu programa deve ler (como é o caso dos arquivos com extensão “.in
” que estão disponíveis no SuSy). Podemos fazer o redirecionamento da entrada utilizando o símbolo “<
”.
O comando a seguir:
./labXXy < arq01.in
faz com que seu programa labXXy
leia os valores que estão armazenados em arq01.in
(ao invés de você ter que digitar cada um dos valores manualmente) e imprima o resultado na saída padrão.
Para fazermos o redirecionamento de saída utilizamos o símbolo “>
”.
O comando a seguir:
./labXXy < arq01.in > arq01.out
faz com que o seu programa leia os valores armazenados em arq01.in
e que a saída seja armazenada em um arquivo chamado arq01.out
.
No SuSy, também são liberados arquivos com extensão “.res
” referentes a cada um dos arquivos “.in
”. Se você utilizou o comando de redirecionamento de saída e tem um arquivo arq01.out
gerado pelo seu programa, e se você salvou o arquivo arq01.res
(a saída esperada pelo SuSy para a entrada arq01.in
), então o comando:
diff arq01.res arq01.out
verifica quais são as diferenças entre os arquivos arq01.res
e arq01.out
. Se nenhuma mensagem for exibida, então os dois arquivos são idênticos. Caso contrário, seu programa não está gerando a saída esperada.
Note que, por exemplo, um único espaço em branco a mais ou a menos na sua saída faz com que seu programa seja considerado errado pelo SuSy.
Para testar seu programa com todos arquivos de testes disponíveis no SuSy, você pode baixar todos arquivos com extensão “.in
” e “.res
” (disponíveis em Testes) ou baixar o arquivo “testes.zip
” (disponível em Arquivos Auxiliares), com todos os arquivos de testes, e repetir os passos anteriores para cada par de arquivos “arqZZ.in
” e “arqZZ.res
”.
Para facilitar o processo de testes, preparamos um script que compila o programa a ser testado, faz o download dos arquivos necessários, executa o programa com todos os casos de testes e faz as comparações com as saídas esperadas pelo SuSy.
Esse script é um arquivo de texto simples que contém uma sequência de comandos que só podem ser entendidos por sistemas Linux. Você pode ver o conteúdo desse arquivo (usando qualque editor de textos), mas é recomendado que você não tente alterá-lo.
Primeiro passo: Baixe o script testador.sh
.
Segundo passo: Faça com que o computador entenda que o script é um arquivo executável. Para isso, execute o seguinte comando:
chmod a+x testador.sh
Terceiro passo: Execute o comando:
./testador.sh
e perceba que ele irá imprimir a seguinte mensagem:
Uso: ./testador.sh
Ou seja, você precisa fornecer um único parâmetro para executá-lo: o código do laboratório, no formato XXy
, onde XXy
é composto por dois dígitos e y
é uma letra minúscula ( “a
” ou “b
”).
Exemplo de execução: Supondo que você queira testar seu programa para o laboratório 02a
, você deverá executar o script da seguinte forma:
./testador.sh 02a
Você pode executar esse comando quantas vezes forem necessárias.
Importante:
.c
” que você deseja testar..c
” naquele diretório. Se você tiver várias versões (antigas) do seu programa crie, por exempo, um diretório chamado backup
e mova para lá todas as versões antigas do seu programa.testes
dentro do diretório onde ele é executado. Este diretório irá conter os arquivos de testes com extensão “.in
” e “.res
” (baixados do site do SuSy pelo script).testes
. Se o diretório e os arquivos de testes já existirem, nada será baixado do SuSy e o script irá apenas compilar e testar o seu programa.curl
esteja previamente instalado. Caso ele não esteja, uma mensagem de erro será exibida e o script será interrompido.