11from difflib_parser import difflib_parser , DiffCode
22
33
4- def test_diff_parser_same_lines ():
4+ def test_difflib_parser_same_lines ():
55 parser = difflib_parser .DifflibParser (["Hello world" ], ["Hello world" ])
66 for diff in parser .iter_diffs ():
77 assert diff .code == DiffCode .SAME
88
99
10- def test_diff_parser_added_line ():
10+ def test_difflib_parser_added_line ():
1111 parser = difflib_parser .DifflibParser ([], ["Hello world" ])
1212 for diff in parser .iter_diffs ():
1313 assert diff .code == DiffCode .RIGHT_ONLY
1414
1515
16- def test_diff_parser_removed_line ():
16+ def test_difflib_parser_removed_line ():
1717 parser = difflib_parser .DifflibParser (["Hello world" ], [])
1818 for diff in parser .iter_diffs ():
1919 assert diff .code == DiffCode .LEFT_ONLY
2020
2121
22- def test_diff_parser_edited_multi_line ():
22+ def test_difflib_parser_edited_multi_line ():
2323 parser = difflib_parser .DifflibParser (
2424 ["- Milk" , "- Eggs" , "Bread" , "- Apples" , "- Ham" ],
2525 ["- Milk" , "- Eggs" , "Bread" , "- Apples" , "- Ham1" ],
@@ -42,7 +42,7 @@ def test_diff_parser_edited_multi_line():
4242 i += 1
4343
4444
45- def test_diff_parser_changed_line_pattern_a ():
45+ def test_difflib_parser_changed_line_pattern_a ():
4646 # Pattern a essentially looks at the case where existing characters were added/removed
4747 parser = difflib_parser .DifflibParser (["Hello world" ], ["Hola world" ])
4848 for diff in parser .iter_diffs ():
@@ -53,7 +53,7 @@ def test_diff_parser_changed_line_pattern_a():
5353 assert diff .right_changes == [1 , 3 ]
5454
5555
56- def test_diff_parser_changed_line_pattern_b ():
56+ def test_difflib_parser_changed_line_pattern_b ():
5757 # Pattern b essentially looks at the case where only additions were included
5858 parser = difflib_parser .DifflibParser (["Hello world" ], ["Hello world!" ])
5959 for diff in parser .iter_diffs ():
@@ -64,7 +64,7 @@ def test_diff_parser_changed_line_pattern_b():
6464 assert diff .right_changes == [11 ]
6565
6666
67- def test_diff_parser_changed_line_pattern_c ():
67+ def test_difflib_parser_changed_line_pattern_c ():
6868 # Pattern c essentially looks at the case where only removals were included
6969 parser = difflib_parser .DifflibParser (["Hello world" ], ["Hello worl" ])
7070 for diff in parser .iter_diffs ():
@@ -73,3 +73,27 @@ def test_diff_parser_changed_line_pattern_c():
7373 assert diff .newline == "Hello worl"
7474 assert diff .left_changes == [10 ]
7575 assert diff .right_changes == []
76+
77+
78+ def test_reuse_difflib_parser ():
79+ parser = difflib_parser .DifflibParser (
80+ ["- Milk" , "- Eggs" , "Bread" , "- Apples" , "- Ham" ],
81+ ["- Milk" , "- Eggs" , "Bread" , "- Apples" , "- Ham1" ],
82+ )
83+ expected_codes = [
84+ DiffCode .SAME ,
85+ DiffCode .SAME ,
86+ DiffCode .SAME ,
87+ DiffCode .SAME ,
88+ DiffCode .CHANGED ,
89+ ]
90+ for _ in range (2 ):
91+ i = 0
92+ for diff in parser .iter_diffs ():
93+ assert diff .code == expected_codes [i ]
94+ if diff .code == DiffCode .CHANGED :
95+ assert diff .line == "- Ham"
96+ assert diff .newline == "- Ham1"
97+ assert diff .left_changes == []
98+ assert diff .right_changes == [5 ]
99+ i += 1
0 commit comments