-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.py
More file actions
112 lines (105 loc) · 3.22 KB
/
test.py
File metadata and controls
112 lines (105 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import io
from contextlib import redirect_stdout
from main import execute
def compile_and_run(source_code: str) -> None:
execute(source_code, True, False, False)
def simulate_vm_execution(source_code: str) -> str:
f = io.StringIO()
with redirect_stdout(f):
compile_and_run(source_code)
return f.getvalue().strip()
def run_tests():
test_cases = [
{
"name": "Print literal diretamente",
"code": """
namespace main {
print("Hello World");
halt();
}
""",
"expected_output": ">> Hello World"
},
{
"name": "Literal atribuído antes do print",
"code": """
namespace main {
auto msg = "Texto fixo";
print(msg);
halt();
}
""",
"expected_output": ">> Texto fixo"
},
{
"name": "Literal usado duas vezes",
"code": """
namespace main {
string a;
a = "Repetido";
print(a);
print("Repetido");
halt();
}
""",
"expected_output": ">> Repetido\n>> Repetido"
},
{
"name": "Função com retorno inteiro",
"code": """
namespace main {
int soma(int a, int b) {
return a + b;
}
auto resultado = soma(5, 6);
print(resultado);
halt();
}
""",
"expected_output": ">> 11"
},
{
"name": "Função que imprime dentro dela",
"code": """
namespace main {
int mensagem() {
print("Olá de dentro da função");
return 0;
}
auto x = mensagem();
halt();
}
""",
"expected_output": ">> Olá de dentro da função"
},
{
"name": "Retorno de string por função",
"code": """
namespace main {
string saudacao() {
return "Oi";
}
auto msg = saudacao();
print(msg);
print("Tudo bem?");
halt();
}
""",
"expected_output": ">> Oi\n>> Tudo bem?"
}
]
print("\n--- Resultados dos Testes de Literais ---\n")
for i, case in enumerate(test_cases, 1):
print(f"Teste {i}: {case['name']}")
try:
output = simulate_vm_execution(case["code"])
success = output == case["expected_output"]
print("✔️ Sucesso" if success else "❌ Falhou")
print("Esperado:")
print(case["expected_output"])
print("Obtido:")
print(output)
except Exception as e:
print("❌ Erro de execução:", e)
print("-" * 40)
run_tests()