Skip to content

Commit e6c9919

Browse files
committed
Parametrize more tests
1 parent fef76f7 commit e6c9919

File tree

1 file changed

+15
-51
lines changed

1 file changed

+15
-51
lines changed

test_main.py

+15-51
Original file line numberDiff line numberDiff line change
@@ -32,63 +32,27 @@ def test_ast(n: int):
3232
assert result.stdout == output
3333

3434

35-
def test_sem_error_break():
36-
result = runner.invoke(app, ["sem", "tests/semantic/input_break.txt"])
37-
assert result.exit_code == 0
38-
assert "line 1" in result.stdout
39-
assert "break" in result.stdout.lower()
40-
assert result.stdout.count("line") == 1
41-
42-
43-
def test_sem_error_continue():
44-
result = runner.invoke(app, ["sem", "tests/semantic/input_continue.txt"])
45-
assert result.exit_code == 0
46-
assert "line 1" in result.stdout
47-
assert "continue" in result.stdout.lower()
48-
assert result.stdout.count("line") == 1
49-
50-
51-
def test_sem_error_vector():
52-
result = runner.invoke(app, ["sem", "tests/semantic/input_vector.txt"])
53-
assert result.exit_code == 0
54-
assert "line 1" in result.stdout
55-
assert "line 3" in result.stdout
56-
assert "line 7" in result.stdout
57-
assert result.stdout.count("line") == 3
58-
assert result.stdout.lower().count("vector") == 3
59-
60-
61-
def test_sem_error_variables():
62-
result = runner.invoke(app, ["sem", "tests/semantic/input_variables.txt"])
63-
assert result.exit_code == 0
64-
assert "line 5" in result.stdout
65-
assert "line 7" in result.stdout
66-
assert result.stdout.count("line") == 2
67-
assert result.stdout.lower().count("variable") == 2
68-
69-
70-
def test_sem_error_transpose():
71-
result = runner.invoke(app, ["sem", "tests/semantic/input_transpose.txt"])
72-
assert result.exit_code == 0
73-
assert "line 7" in result.stdout
74-
assert "transpose" in result.stdout.lower()
75-
assert result.stdout.count("line") == 1
76-
77-
7835
@pytest.mark.parametrize(
79-
"name,line_numbers",
36+
"name,line_numbers,additional",
8037
[
81-
("special_matrix", [1, 11]),
82-
("indexing", [5, 6, 7]),
83-
("indexing_bounds", [4, 11, 12]),
84-
("binary_operations", [7, 8, 14, 16, 17]),
85-
("comparisons", [7, 9]),
86-
("compound_assignments", [10, 11, 12]),
38+
("break", [1], "break"),
39+
("continue", [1], "continue"),
40+
("vector", [1, 3, 7], "vector"),
41+
("variables", [5, 7], "variable"),
42+
("transpose", [7], "transpose"),
43+
("special_matrix", [1, 11], "matrix"),
44+
("indexing", [5, 6, 7], ""),
45+
("indexing_bounds", [4, 11, 12], "out of bounds"),
46+
("binary_operations", [7, 8, 14, 16, 17], "binary operation"),
47+
("comparisons", [7, 9], "comparison"),
48+
("compound_assignments", [10, 11, 12], "assignment"),
8749
],
8850
)
89-
def test_sem_errors(name: str, line_numbers: list):
51+
def test_sem_errors(name: str, line_numbers: list[int], additional: str):
9052
result = runner.invoke(app, ["sem", f"tests/semantic/input_{name}.txt"])
9153
assert result.exit_code == 0
9254
for ln in line_numbers:
9355
assert f"line {ln}" in result.stdout
9456
assert result.stdout.lower().count("line") == len(line_numbers)
57+
if additional:
58+
assert result.stdout.lower().count(additional) == len(line_numbers)

0 commit comments

Comments
 (0)