Skip to content

Commit 5f43849

Browse files
committed
Setup unit test for infinite loop detection
Needed a larger number of lines for issue to trigger. Used grocery-shopping exercise as benchmark
1 parent 841e20e commit 5f43849

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

test/test_difflib_parser.py

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,52 @@
1-
from difflib_parser import difflib_parser
1+
from difflib_parser import difflib_parser, DiffCode
22

33

44
def test_diff_parser_same_lines():
55
parser = difflib_parser.DifflibParser(["Hello world"], ["Hello world"])
66
for diff in parser.iter_diffs():
7-
assert diff.code == difflib_parser.DiffCode.SAME
7+
assert diff.code == DiffCode.SAME
88

99

1010
def test_diff_parser_added_line():
1111
parser = difflib_parser.DifflibParser([], ["Hello world"])
1212
for diff in parser.iter_diffs():
13-
assert diff.code == difflib_parser.DiffCode.RIGHT_ONLY
13+
assert diff.code == DiffCode.RIGHT_ONLY
1414

1515

1616
def test_diff_parser_removed_line():
1717
parser = difflib_parser.DifflibParser(["Hello world"], [])
1818
for diff in parser.iter_diffs():
19-
assert diff.code == difflib_parser.DiffCode.LEFT_ONLY
19+
assert diff.code == DiffCode.LEFT_ONLY
20+
21+
22+
def test_diff_parser_edited_multi_line():
23+
parser = difflib_parser.DifflibParser(
24+
["- Milk", "- Eggs", "Bread", "- Apples", "- Ham"],
25+
["- Milk", "- Eggs", "Bread", "- Apples", "- Ham1"],
26+
)
27+
expected_codes = [
28+
DiffCode.SAME,
29+
DiffCode.SAME,
30+
DiffCode.SAME,
31+
DiffCode.SAME,
32+
DiffCode.CHANGED,
33+
]
34+
i = 0
35+
for diff in parser.iter_diffs():
36+
assert diff.code == expected_codes[i]
37+
if diff.code == DiffCode.CHANGED:
38+
assert diff.line == "- Ham"
39+
assert diff.newline == "- Ham1"
40+
assert diff.left_changes == []
41+
assert diff.right_changes == [5]
42+
i += 1
2043

2144

2245
def test_diff_parser_changed_line_pattern_a():
2346
# Pattern a essentially looks at the case where existing characters were added/removed
2447
parser = difflib_parser.DifflibParser(["Hello world"], ["Hola world"])
2548
for diff in parser.iter_diffs():
26-
assert diff.code == difflib_parser.DiffCode.CHANGED
49+
assert diff.code == DiffCode.CHANGED
2750
assert diff.line == "Hello world"
2851
assert diff.newline == "Hola world"
2952
assert diff.left_changes == [1, 3, 4]
@@ -34,7 +57,7 @@ def test_diff_parser_changed_line_pattern_b():
3457
# Pattern b essentially looks at the case where only additions were included
3558
parser = difflib_parser.DifflibParser(["Hello world"], ["Hello world!"])
3659
for diff in parser.iter_diffs():
37-
assert diff.code == difflib_parser.DiffCode.CHANGED
60+
assert diff.code == DiffCode.CHANGED
3861
assert diff.line == "Hello world"
3962
assert diff.newline == "Hello world!"
4063
assert diff.left_changes == []
@@ -45,7 +68,7 @@ def test_diff_parser_changed_line_pattern_c():
4568
# Pattern c essentially looks at the case where only removals were included
4669
parser = difflib_parser.DifflibParser(["Hello world"], ["Hello worl"])
4770
for diff in parser.iter_diffs():
48-
assert diff.code == difflib_parser.DiffCode.CHANGED
71+
assert diff.code == DiffCode.CHANGED
4972
assert diff.line == "Hello world"
5073
assert diff.newline == "Hello worl"
5174
assert diff.left_changes == [10]

0 commit comments

Comments
 (0)