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()
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"))
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())
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))
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)
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()
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()
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)
def fromJson(jsonData): return Submissao(jsonData["submissao"]["codigo"], Questao.fromJson(jsonData["questao"]))