Todo teste tem um problema a ser resolvido, para saber se o(a) candidato(a) conseguiu solucionar, comparamos o que o código dele(a) gerou com o que era esperado. 


Para cada conjunto de entradas, existe um conjunto de saídas esperadas. Se foram geradas essas saídas, é considerado correto. 

Se acertou as saídas esperadas para um conjunto de entradas, mas não conseguiu o esperado para outro conjunto, recebe uma nota parcial.


Exemplo 1: queremos que o código do candidato consiga somar dois números. 

Primeira entrada é 4, 4. A saída esperada é 8, pois é 4+4. Esse conjunto de entrada e saída a pessoa pode ver.

Segunda entrada é 3, 2. A saída esperada para esse conjunto é 5. Esse conjunto de entrada e saída não é visível.

Como tem mais de um conjunto, o(a) candidato(a) não pode simplesmente só dar o valor 8, sem fazer efetivamente a soma, pois 8 não é a resposta para a outra entrada (3,2). 


Exemplo 2: o código do candidato deve responder quais são as cores da bandeira de um certo país. 

Primeira entrada: Brasil. Resposta esperada: azul, amarelo, verde e branco. Esse conjunto de entrada e saída a pessoa pode ver.

Segunda entrada: Itália. Resposta esperada: verde, branco e vermelho.  Esse conjunto de entrada e saída não é visível.

Com existe mais de uma entrada, a pessoa não apenas dar a resposta "azul, amarelo, verde e branco", pois não é a resposta correta para a segunda entrada (Itália).




Explicação detalhada


O(A) candidato(a) deve resolver o problema descrito no enunciado, gerando os outputs esperados, passando pelos testes unitários. Os valores de saída do código devem ser apresentados no console do compilador. Existe tempo limite.



Quais informações do teste posso visualizar?


Nome do teste, quanto o candidato acertou (em %), tempo gasto, enunciado da questão, entradas, saídas esperadas, linguagem escolhida, algoritmo do(a) candidato(a).



O que aparece para o(a) candidato(a)?


Durante o teste, aparecem as seguintes informações:

Enunciado da questão, incluindo um exemplo de input(s) e output(s); um test case visível, o que inclui um input (poder ser um único valor, conjunto de valores, etc.) e os outputs esperados para esse input; tempo restante; linguagem escolhida; code stub; o que ele(a) escreveu até agora; resultado da validação (quando executa).


Exemplo:

 

Os outros test cases são invisíveis, mas é informada a faixa de valores ou tipo dos inputs no enunciado.



Entradas


Todas as entradas são de STDIN e são enviadas para STDOUT

Os valores de entrada do código não serão codificados pela pessoa, esses valores serão providenciados pela plataforma.

A primeira linha é a quantidade de interações/inputs. Os inputs são strings, é necessário um tratamento. 

Antes de fazer alterações a pessoa pode executar, assim será possível verificar exatamente como vieram as entradas.



Code stub


Como o foco é resolver o problema existem code stubs para cada linguagem, para facilitar a leitura das entradas.

Code Stub é basicamente pedaços de código que envolvem o algoritmo, eles injetam as entradas no código para rodar algoritmo processando estas entradas inseridas pelo stub, produzindo uma saída que irá ser testada nos test cases. 



Validação


Se as saídas não estão iguais, a pessoa será avisada.


Se as saídas estiverem corretas, vai ser sinalizado.



Linguagens


A pessoa é livre para escolher qualquer linguagem da lista para desenvolver seu código. 

Está disponível atualmente: Java, C, C++, C#, PHP, Python 3, Ruby, Javascript, Objective-C, Kotlin, Swift 3, GO Lang, Groov y e Scala.


A linguagem selecionada está um pouco em cima do código, no lado direito. Exemplo:


 


Obs: imagens ilustrativas, os problemas que recebem são mais complexos.