Testar múltiplos arquivos
Em um exemplo de sala de aula, você poderá ter vários arquivos que deseje testar a equivalência, e você pode não querer ler as saídas para cada uma das soluções do aluno.
Construir comparações de circuito
Uma abordagem é a construir um circuito para testes que fará a comparação direta. Criaremos um circuito adicional no arquivo para testes que conterá nosso circuito com a solução. Nosso circuito de teste global, incluirá o subcircuito adder-master.circ e o subcircuio com solução acoplados em um mesmo circuito. Conexões serão feitas para que haja apenas uma saída, que será 1, quando os dois subcircuitos concordarem.
Agora podemos simplesmente executar o Logisim substituindo cada arquivo de consulta.
Para qualquer solução correta, haverá uma única saída igual a 1
.
Usar redirecionamento e "shell scripts"
Se você estiver completamente confortável com a linha de comando, você poderá construir seu próprio shell script para fazer isso. Aqui, vamos usar o redirecionamento (o operador>) para salvar a saída de cada circuito em um arquivo. Por exemplo, poderíamos emitir os seguintes comandos para coletar a saída do circuito principal e do circuito de consulta.
java -jar logisim-filename.jar adder-test.circ -tty table > output-master.txt
java -jar logisim-filename.jar adder-test.circ -tty table -sub adder-master.circ adder-query.circ > output-query.txt
Agora teremos criado dois arquivos diferentes. Poderemos então comparar os dois arquivos de saída usando um programa construído para esse fim. Em Linux ou MacOS X, você poderá usar o cmp ou diff utilitários de linha de comando. No Windows, você poderá usar o WinMerge.
Para processar vários arquivos de consulta, você poderá construir um programa simples como um script shell para percorrer cada um e comparar o resultado. Aqui está como eu faria isso no Linux com bash
RUN_TEST="java -jar logisim-filename.jar adder-test.circ -tty table"
${RUN_TEST} > output-master.txt
for QUERY_FILE in adder-query*.circ
do
if ${RUN_TEST} -sub adder-master.circ ${QUERY_FILE} | cmp -s output-master.txt
then
echo "${QUERY_FILE} OK"
else
echo "${QUERY_FILE} different"
fi
done
Próximo: Guia do usuário.