-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest_difflib_parser.py
More file actions
99 lines (83 loc) · 3.36 KB
/
Copy pathtest_difflib_parser.py
File metadata and controls
99 lines (83 loc) · 3.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
from difflib_parser import difflib_parser, DiffCode
def test_difflib_parser_same_lines():
parser = difflib_parser.DifflibParser(["Hello world"], ["Hello world"])
for diff in parser.iter_diffs():
assert diff.code == DiffCode.SAME
def test_difflib_parser_added_line():
parser = difflib_parser.DifflibParser([], ["Hello world"])
for diff in parser.iter_diffs():
assert diff.code == DiffCode.RIGHT_ONLY
def test_difflib_parser_removed_line():
parser = difflib_parser.DifflibParser(["Hello world"], [])
for diff in parser.iter_diffs():
assert diff.code == DiffCode.LEFT_ONLY
def test_difflib_parser_edited_multi_line():
parser = difflib_parser.DifflibParser(
["- Milk", "- Eggs", "Bread", "- Apples", "- Ham"],
["- Milk", "- Eggs", "Bread", "- Apples", "- Ham1"],
)
expected_codes = [
DiffCode.SAME,
DiffCode.SAME,
DiffCode.SAME,
DiffCode.SAME,
DiffCode.CHANGED,
]
i = 0
for diff in parser.iter_diffs():
assert diff.code == expected_codes[i]
if diff.code == DiffCode.CHANGED:
assert diff.line == "- Ham"
assert diff.newline == "- Ham1"
assert diff.left_changes == []
assert diff.right_changes == [5]
i += 1
def test_difflib_parser_changed_line_pattern_a():
# Pattern a essentially looks at the case where existing characters were added/removed
parser = difflib_parser.DifflibParser(["Hello world"], ["Hola world"])
for diff in parser.iter_diffs():
assert diff.code == DiffCode.CHANGED
assert diff.line == "Hello world"
assert diff.newline == "Hola world"
assert diff.left_changes == [1, 3, 4]
assert diff.right_changes == [1, 3]
def test_difflib_parser_changed_line_pattern_b():
# Pattern b essentially looks at the case where only additions were included
parser = difflib_parser.DifflibParser(["Hello world"], ["Hello world!"])
for diff in parser.iter_diffs():
assert diff.code == DiffCode.CHANGED
assert diff.line == "Hello world"
assert diff.newline == "Hello world!"
assert diff.left_changes == []
assert diff.right_changes == [11]
def test_difflib_parser_changed_line_pattern_c():
# Pattern c essentially looks at the case where only removals were included
parser = difflib_parser.DifflibParser(["Hello world"], ["Hello worl"])
for diff in parser.iter_diffs():
assert diff.code == DiffCode.CHANGED
assert diff.line == "Hello world"
assert diff.newline == "Hello worl"
assert diff.left_changes == [10]
assert diff.right_changes == []
def test_reuse_difflib_parser():
parser = difflib_parser.DifflibParser(
["- Milk", "- Eggs", "Bread", "- Apples", "- Ham"],
["- Milk", "- Eggs", "Bread", "- Apples", "- Ham1"],
)
expected_codes = [
DiffCode.SAME,
DiffCode.SAME,
DiffCode.SAME,
DiffCode.SAME,
DiffCode.CHANGED,
]
for _ in range(2):
i = 0
for diff in parser.iter_diffs():
assert diff.code == expected_codes[i]
if diff.code == DiffCode.CHANGED:
assert diff.line == "- Ham"
assert diff.newline == "- Ham1"
assert diff.left_changes == []
assert diff.right_changes == [5]
i += 1