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.