@@ -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