v2 / vlib / arrays / diff / diff_test.v
130 lines · 118 sloc · 1.41 KB · 3291372c571d8ae654589f1ffe65c42e8c5b1c63
Raw
1import arrays.diff
2
3fn test_diff_array() {
4 mut aa := ['hi', '1', '5', '3']
5 mut bb := aa.clone()
6 mut ctx := diff.diff(aa, bb)
7 assert ctx.changes.len == 0
8 bb.insert(2, 'max')
9 // aa := ['hi', '1', '5', '3']
10 // bb := ['hi', '1', 'max', '5', '3']
11 ctx = diff.diff(aa, bb)
12 assert ctx.changes == [
13 diff.DiffChange{
14 a: 2
15 b: 2
16 del: 0
17 ins: 1
18 },
19 ]
20
21 bb.delete(4)
22 // aa := ['hi', '1', '5', '3']
23 // bb := ['hi', '1', 'max', '5']
24 ctx = diff.diff(aa, bb)
25 assert ctx.changes == [
26 diff.DiffChange{
27 a: 2
28 b: 2
29 del: 0
30 ins: 1
31 },
32 diff.DiffChange{
33 a: 3
34 b: 4
35 del: 1
36 ins: 0
37 },
38 ]
39
40 str1 := ctx.generate_patch()
41 assert str1 == 'hi
421
43-5
44-3
45+max
46+5
47'
48
49 str2 := ctx.generate_patch(block_header: true)
50 assert str2 == '@@ -1,7 +1,7 @@
51hi
521
53-5
54-3
55+max
56+5
57'
58
59 str3 := ctx.generate_patch(block_header: true, unified: 1)
60 assert str3 == '@@ -2,4 +2,4 @@
611
62-5
63-3
64+max
65+5
66'
67 str4 := ctx.generate_patch(block_header: true, unified: 10)
68 assert str4 == '@@ -1,14 +1,14 @@
69hi
701
71-5
72-3
73+max
74+5
75'
76
77 str5 := ctx.generate_patch(block_header: true, unified: -1)
78 assert str5 == '@@ -3,2 +3,2 @@
79-5
80-3
81+max
82+5
83'
84}
85
86fn test_diff_runes() {
87 mut aa := 'brown fox jumps over the lazy dog'.runes()
88 mut bb := 'brwn faax junps ovver the lay daog'.runes()
89 mut ctx := diff.diff(aa, bb)
90
91 str1 := ctx.generate_patch()
92 assert str1 == 'b
93r
94-o
95w
96n
97
98f
99-o
100+a
101+a
102x
103
104j
105u
106-m
107+n
108p
109s
110
111o
112+v
113v
114e
115r
116
117l
118a
119-z
120-y
121-
122-d
123+y
124+
125+d
126+a
127o
128g
129'
130}
131