def test_ejecucion_clase_con_herencia_atributo(tmpdir): programa_ejemplo = ''' Clase hola { int p; Funcion adios()->int { return 3; } } Clase team hereda hola{ int cool; Funcion electron(){ } } Main () { team karalan; karalan.p = 3; return karalan.p; } ''' # FUNCIO} d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) assert vm.run() == 3
def test_main_return_none(tmpdir): programa_ejemplo = ''' Main () { } ''' d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) assert vm.run() == None
def test_ejecucion_declaracion_matriz(tmpdir): programa_ejemplo = ''' int a [2][3]; Main () { } ''' # FUNCIO} d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) vm.run()
def test_ejecucion_comparacion(tmpdir): programa_ejemplo = ''' Main () { return (-1)<3; } ''' # FUNCIO} d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d, debug=True) vm = VirtualMachine(fileInput=d) assert vm.run() == True
def test_ejecucion_llamada_pos_matriz(tmpdir): programa_ejemplo = ''' int a [2][3]; Main () { a[0][1]= 1; return a[0][1]; } ''' # FUNCIO} d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) assert vm.run() == 1
def test_ejecucion_for_loop(tmpdir): programa_ejemplo = ''' int alan ; Main () { desde alan = 0 hasta 43 hacer { escribe(alan); }; } ''' d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) vm.run()
def test_ejecucion_write(tmpdir, capfd): programa_ejemplo = ''' int alan ; Main () { alan = 3; escribe(alan); } ''' d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) vm.run() out, err = capfd.readouterr() assert out == "3\n"
def test_ejecucion_semantico_read(tmpdir, monkeypatch): monkeypatch.setattr('sys.stdin', io.StringIO('my input')) programa_ejemplo = ''' string alan ; Main () { lee(alan); return alan; } ''' d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d, debug=True) vm = VirtualMachine(fileInput=d) assert vm.run() == 'my input'
def test_ejecucion_llamada_func_parametros(tmpdir): programa_ejemplo = ''' Funcion karen(int a, int b, float f) -> int{ return a + b; } Main () { return karen(1,3,3.1); } ''' # FUNCIONO! d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) assert vm.run() == 4
def test_ejecucion_declaracion_alcances_error(tmpdir): programa_ejemplo = ''' int a ; Main () { { int a; }; a = 4; } ''' # FUNCIO} d = str(tmpdir / "a.out") with pytest.raises(SemanticError): SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) vm.run()
def test_analisis_while(tmpdir): programa_ejemplo = ''' int alan ; Main () { alan = 13; mientras (4 < alan) hacer { alan = alan - 1; }; } ''' d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) vm.run()
def test_ejecucion_recursividad(): programa_ejemplo = ''' int alan ; Funcion karen(int a) -> int{ if (a < 3){ return 1; }else{ return karen(a - 1); }; } Main () { return karen(3); } ''' vm = VirtualMachine() parser = yacc.yacc() vm.ast = parser.parse(programa_ejemplo) assert vm.run() == 1
def test_ejecucion_if(tmpdir): programa_ejemplo = ''' int alan ; Main () { alan = 9; if(alan < 10) { return alan; } else { return 3; }; } ''' d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) assert vm.run() == 9
def test_ejecucion_llamada_metodo(tmpdir): programa_ejemplo = ''' Clase team{ Funcion electron() -> int{ return 3; } } Main () { team a; return a.electron(); } ''' # FUNCIO d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) assert vm.run() == 3
def test_ejecucion_if_expresion(tmpdir): programa_ejemplo = ''' int alan ; Main () { int cool; cool = 4; alan =3 + if(cool < 10) { return 3; } else { return 5; }; return alan; } ''' d = str(tmpdir / "a.out") SemanticAnalyzer(programa_ejemplo).analisis_semantico(filename=d) vm = VirtualMachine(fileInput=d) assert vm.run() == 6