예제 #1
0
    def test_executar_codigo_com_erro(self):
        codigo = "x = input('bla')\nprint(y)"
        testsCases = [TestCase("1", ["2"], "2")]
        questao = Questao("", testsCases)
        submissao = Submissao(codigo, None, questao)
        arquivo = ArquivoSubmissao(submissao.codigo)
        j = Juiz(submissao)
        j.salvarResultados = stub_save

        with self.assertRaises(JuizError):
            j.executarTestes(arquivo)
        arquivo.apagarArquivo()

        codigo = "x = 2\nz = input('ble')\nprint(y)"
        testsCases = [TestCase("1", ["2"], "2")]
        questao = Questao("", testsCases)
        submissao = Submissao(codigo, None, questao)
        arquivo = ArquivoSubmissao(submissao.codigo)
        j = Juiz(submissao)
        j.salvarResultados = stub_save

        with self.assertRaisesRegex(
                JuizError,
                "O código apresentou o seguinte erro 'NameError' na linha 3"):
            j.executarTestes(arquivo)
        arquivo.apagarArquivo()
예제 #2
0
 def test_capturar_mensagem_algoritmo(self):
     codigo = "x = input('bla')\nprint(x)"
     testsCases = [TestCase("1", ["2"], "2")]
     questao = Questao("", testsCases)
     submissao = Submissao(codigo, None, questao)
     j = Juiz(submissao)
     self.assertEqual(["2"], j.respostaAlgoritmo("bla2\n2"))
예제 #3
0
    def test_capturar_textos_input(self):
        codigo = "x = input('blableble')\nprint(x)"

        testsCases = [TestCase("1", ["2", "3"], "2")]
        questao = Questao("", testsCases)
        submissao = Submissao(codigo, None, questao)
        j = Juiz(submissao)
        self.assertListEqual(["blableble"], j.obterTextosInput())
예제 #4
0
    def test_falha_match_input_codigo(self):
        codigo = "x = input('blableble')\nprint(x)"

        testsCases = [TestCase("1", ["2", "3"], "2")]
        questao = Questao("", testsCases)
        submissao = Submissao(codigo, None, questao)
        j = Juiz(submissao)
        self.assertFalse(j.matchInputCodigo(testsCases[0].entradas))
예제 #5
0
 def test_executar_arquivo_inexistente(self):
     codigo = "x = input('bla')\nprint(y)"
     testsCases = [TestCase("1", ["2"], "2")]
     questao = Questao("", testsCases)
     submissao = Submissao(codigo, None, questao)
     arquivo = ArquivoSubmissao(submissao.codigo)
     j = Juiz(submissao)
     arquivo.apagarArquivo()
     with self.assertRaises(JuizError):
         j.executarTestes(arquivo)
예제 #6
0
 def test_executar_codigo_com_menos_inputs(self):
     codigo = "x = input('blableble')\nprint(x)"
     testsCases = [TestCase("1", ["2", "3"], "2")]
     questao = Questao("", testsCases)
     submissao = Submissao(codigo, None, questao)
     arquivo = ArquivoSubmissao(submissao.codigo)
     j = Juiz(submissao)
     j.salvarResultados = stub_save
     with self.assertRaises(JuizError):
         j.executarTestes(arquivo)
     arquivo.apagarArquivo()
예제 #7
0
 def test_executar_codigo_sucesso(self):
     codigo = "x = input('bla')\nprint(x)"
     testsCases = [TestCase("1", ["2"], "2")]
     questao = Questao("", testsCases)
     submissao = Submissao(codigo, None, questao)
     arquivo = ArquivoSubmissao(submissao.codigo)
     j = Juiz(submissao)
     j.salvarResultados = stub_save
     self.assertListEqual(
         [ResultadoTestCase(submissao, testsCases[0], ["2"], True)],
         j.executarTestes(arquivo))
     arquivo.apagarArquivo()
예제 #8
0
    def post(self, request, format=None):

        try:
            # TODO: verificações para ver se o JSON é válido
            if self.submissaoRequestValid(request):
                testsCases = TestCase.listAllByQuery(Query("questaoId", "==", request.data["questaoId"]))
                
                questao = Questao(request.data["questaoId"], testsCases)
                submissao = Submissao(None, request.data["codigo"], Estudante(request.data["estudanteId"], None), questao)

                juiz = Juiz(submissao)
                arquivo = ArquivoSubmissao(submissao.codigo)
                jsonVisualizacao = juiz.executarVisualizacao(arquivo)
                arquivo.apagarArquivo()
                return JsonResponse(jsonVisualizacao, safe=False, status=status.HTTP_201_CREATED)
            
        except Exception as exception:
            return JsonResponse({"erro":str(exception)}, safe=False, status=status.HTTP_500_INTERNAL_SERVER_ERROR)    
        return Response(status=status.HTTP_201_CREATED)
예제 #9
0
 def fromJson(jsonData):
     return Submissao(jsonData["submissao"]["codigo"],
                      Questao.fromJson(jsonData["questao"]))