示例#1
0
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
示例#2
0
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
示例#3
0
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()
示例#4
0
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
示例#5
0
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()
示例#7
0
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"
示例#8
0
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'
示例#9
0
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
示例#10
0
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()
示例#12
0
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
示例#14
0
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