-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdiff_tests.mq
More file actions
112 lines (89 loc) · 2.5 KB
/
Copy pathdiff_tests.mq
File metadata and controls
112 lines (89 loc) · 2.5 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
100
101
102
103
104
105
106
107
108
109
110
111
112
include "test"
| include "diff"
|
# -- diff_lines --
def test_diff_lines_no_changes():
let r = diff_lines("a\nb\nc", "a\nb\nc")
| assert_false(has_changes(r))
end
def test_diff_lines_replace():
let r = diff_lines("a\nb\nc", "a\nx\nc")
| assert_eq(added(r), ["x"])
| assert_eq(removed(r), ["b"])
| assert_eq(unchanged(r), ["a", "c"])
end
def test_diff_lines_insert_only():
let r = diff_lines("a\nb", "a\nb\nc")
| assert_eq(added(r), ["c"])
| assert_eq(removed(r), [])
end
def test_diff_lines_delete_only():
let r = diff_lines("a\nb\nc", "a\nc")
| assert_eq(removed(r), ["b"])
| assert_eq(added(r), [])
end
# -- diff_words --
def test_diff_words_replace():
let r = diff_words("the quick fox", "the slow fox")
| assert_eq(added(r), ["slow"])
| assert_eq(removed(r), ["quick"])
| assert_eq(unchanged(r), ["the", "fox"])
end
def test_diff_words_collapses_whitespace():
let r = diff_words("a b", "a b")
| assert_false(has_changes(r))
end
# -- diff_chars --
def test_diff_chars_replace():
let r = diff_chars("cat", "cut")
| assert_eq(removed(r), ["a"])
| assert_eq(added(r), ["u"])
end
# -- diff_array --
def test_diff_array_numbers():
let r = diff_array([1, 2, 3], [1, 4, 3])
| assert_eq(removed(r), [2])
| assert_eq(added(r), [4])
end
def test_diff_array_empty_inputs():
let r = diff_array([], [])
| assert_false(has_changes(r))
| assert_eq(r, [])
end
# -- predicates --
def test_is_equal():
assert_true(is_equal({"tag": "equal", "value": "x"}))
| assert_false(is_equal({"tag": "insert", "value": "x"}))
end
def test_is_added():
assert_true(is_added({"tag": "insert", "value": "x"}))
| assert_false(is_added({"tag": "delete", "value": "x"}))
end
def test_is_removed():
assert_true(is_removed({"tag": "delete", "value": "x"}))
| assert_false(is_removed({"tag": "insert", "value": "x"}))
end
# -- stat --
def test_stat():
let r = diff_lines("a\nb\nc", "a\nx\nc")
| let s = stat(r)
| assert_eq(s["added"], 1)
| assert_eq(s["removed"], 1)
| assert_eq(s["unchanged"], 2)
end
# -- rendering --
def test_to_unified():
let r = diff_lines("a\nb", "a\nx")
| assert_eq(to_unified(r), " a\n- b\n+ x")
end
def test_to_unified_no_changes():
let r = diff_lines("a\nb", "a\nb")
| assert_eq(to_unified(r), " a\n b")
end
def test_to_markdown_wraps_in_diff_fence():
let r = diff_lines("a", "b")
| let out = to_markdown_string(to_markdown(r))
| assert_true(contains(out, "```diff"))
| assert_true(contains(out, "- a"))
| assert_true(contains(out, "+ b"))
end