@@ -32,63 +32,27 @@ def test_ast(n: int):
32
32
assert result .stdout == output
33
33
34
34
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
-
78
35
@pytest .mark .parametrize (
79
- "name,line_numbers" ,
36
+ "name,line_numbers,additional " ,
80
37
[
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" ),
87
49
],
88
50
)
89
- def test_sem_errors (name : str , line_numbers : list ):
51
+ def test_sem_errors (name : str , line_numbers : list [ int ], additional : str ):
90
52
result = runner .invoke (app , ["sem" , f"tests/semantic/input_{ name } .txt" ])
91
53
assert result .exit_code == 0
92
54
for ln in line_numbers :
93
55
assert f"line { ln } " in result .stdout
94
56
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