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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182
|
# Test type: same
a='12345' -> 5
b='12345' -> 5
c='12345' -> 5
$ diff2 A B
equal a[0:5] (12345) / b[0:5] (12345)
$ diff2 C B
equal c[0:5] (12345) / b[0:5] (12345)
$ diff3 A B C
E a[0:5] (12345) / b[0:5] (12345) / c[0:5] (12345)
===========================================================
# Test type: add a side
a='a12345z' -> 7
b='1245' -> 4
c='1245' -> 4
$ diff2 A B
delete a[0:1] (a) / b[0:0] ()
equal a[1:3] (12) / b[0:2] (12)
delete a[3:4] (3) / b[2:2] ()
equal a[4:6] (45) / b[2:4] (45)
delete a[6:7] (z) / b[4:4] ()
$ diff2 C B
equal c[0:4] (1245) / b[0:4] (1245)
$ diff3 A B C
A a[0:1] (a) / b[0:0] () / c[0:0] ()
E a[1:3] (12) / b[0:2] (12) / c[0:2] (12)
A a[3:4] (3) / b[2:2] () / c[2:2] ()
E a[4:6] (45) / b[2:4] (45) / c[2:4] (45)
A a[6:7] (z) / b[4:4] () / c[4:4] ()
===========================================================
# Test type: add same
a='a12345z' -> 7
b='1245' -> 4
c='a12345z' -> 7
$ diff2 A B
delete a[0:1] (a) / b[0:0] ()
equal a[1:3] (12) / b[0:2] (12)
delete a[3:4] (3) / b[2:2] ()
equal a[4:6] (45) / b[2:4] (45)
delete a[6:7] (z) / b[4:4] ()
$ diff2 C B
delete c[0:1] (a) / b[0:0] ()
equal c[1:3] (12) / b[0:2] (12)
delete c[3:4] (3) / b[2:2] ()
equal c[4:6] (45) / b[2:4] (45)
delete c[6:7] (z) / b[4:4] ()
$ diff3 A B C
e a[0:1] (a) / b[0:0] () / c[0:1] (a)
E a[1:3] (12) / b[0:2] (12) / c[1:3] (12)
e a[3:4] (3) / b[2:2] () / c[3:4] (3)
E a[4:6] (45) / b[2:4] (45) / c[4:6] (45)
e a[6:7] (z) / b[4:4] () / c[6:7] (z)
===========================================================
# Test type: add c side
a='1245' -> 4
b='1245' -> 4
c='a12345z' -> 7
$ diff2 A B
equal a[0:4] (1245) / b[0:4] (1245)
$ diff2 C B
delete c[0:1] (a) / b[0:0] ()
equal c[1:3] (12) / b[0:2] (12)
delete c[3:4] (3) / b[2:2] ()
equal c[4:6] (45) / b[2:4] (45)
delete c[6:7] (z) / b[4:4] ()
$ diff3 A B C
C a[0:0] () / b[0:0] () / c[0:1] (a)
E a[0:2] (12) / b[0:2] (12) / c[1:3] (12)
C a[2:2] () / b[2:2] () / c[3:4] (3)
E a[2:4] (45) / b[2:4] (45) / c[4:6] (45)
C a[4:4] () / b[4:4] () / c[6:7] (z)
===========================================================
# Test type: delete a side
a='24' -> 2
b='12345' -> 5
c='12345' -> 5
$ diff2 A B
insert a[0:0] () / b[0:1] (1)
equal a[0:1] (2) / b[1:2] (2)
insert a[1:1] () / b[2:3] (3)
equal a[1:2] (4) / b[3:4] (4)
insert a[2:2] () / b[4:5] (5)
$ diff2 C B
equal c[0:5] (12345) / b[0:5] (12345)
$ diff3 A B C
A a[0:0] () / b[0:1] (1) / c[0:1] (1)
E a[0:1] (2) / b[1:2] (2) / c[1:2] (2)
A a[1:1] () / b[2:3] (3) / c[2:3] (3)
E a[1:2] (4) / b[3:4] (4) / c[3:4] (4)
A a[2:2] () / b[4:5] (5) / c[4:5] (5)
===========================================================
# Test type: delete same
a='24' -> 2
b='12345' -> 5
c='24' -> 2
$ diff2 A B
insert a[0:0] () / b[0:1] (1)
equal a[0:1] (2) / b[1:2] (2)
insert a[1:1] () / b[2:3] (3)
equal a[1:2] (4) / b[3:4] (4)
insert a[2:2] () / b[4:5] (5)
$ diff2 C B
insert c[0:0] () / b[0:1] (1)
equal c[0:1] (2) / b[1:2] (2)
insert c[1:1] () / b[2:3] (3)
equal c[1:2] (4) / b[3:4] (4)
insert c[2:2] () / b[4:5] (5)
$ diff3 A B C
e a[0:0] () / b[0:1] (1) / c[0:0] ()
E a[0:1] (2) / b[1:2] (2) / c[0:1] (2)
e a[1:1] () / b[2:3] (3) / c[1:1] ()
E a[1:2] (4) / b[3:4] (4) / c[1:2] (4)
e a[2:2] () / b[4:5] (5) / c[2:2] ()
===========================================================
# Test type: delete c side
a='12345' -> 5
b='12345' -> 5
c='24' -> 2
$ diff2 A B
equal a[0:5] (12345) / b[0:5] (12345)
$ diff2 C B
insert c[0:0] () / b[0:1] (1)
equal c[0:1] (2) / b[1:2] (2)
insert c[1:1] () / b[2:3] (3)
equal c[1:2] (4) / b[3:4] (4)
insert c[2:2] () / b[4:5] (5)
$ diff3 A B C
C a[0:1] (1) / b[0:1] (1) / c[0:0] ()
E a[1:2] (2) / b[1:2] (2) / c[0:1] (2)
C a[2:3] (3) / b[2:3] (3) / c[1:1] ()
E a[3:4] (4) / b[3:4] (4) / c[1:2] (4)
C a[4:5] (5) / b[4:5] (5) / c[2:2] ()
===========================================================
# Test type: conflict both ends
a='a2b4c' -> 5
b='12345' -> 5
c='x2y4z' -> 5
$ diff2 A B
replace a[0:1] (a) / b[0:1] (1)
equal a[1:2] (2) / b[1:2] (2)
replace a[2:3] (b) / b[2:3] (3)
equal a[3:4] (4) / b[3:4] (4)
replace a[4:5] (c) / b[4:5] (5)
$ diff2 C B
replace c[0:1] (x) / b[0:1] (1)
equal c[1:2] (2) / b[1:2] (2)
replace c[2:3] (y) / b[2:3] (3)
equal c[3:4] (4) / b[3:4] (4)
replace c[4:5] (z) / b[4:5] (5)
$ diff3 A B C
N a[0:1] (a) / b[0:1] (1) / c[0:1] (x)
E a[1:2] (2) / b[1:2] (2) / c[1:2] (2)
N a[2:3] (b) / b[2:3] (3) / c[2:3] (y)
E a[3:4] (4) / b[3:4] (4) / c[3:4] (4)
N a[4:5] (c) / b[4:5] (5) / c[4:5] (z)
===========================================================
# Test type: conflict skewed
a='1a2b4c' -> 6
b='12345' -> 5
c='x2y45z' -> 6
$ diff2 A B
equal a[0:1] (1) / b[0:1] (1)
delete a[1:2] (a) / b[1:1] ()
equal a[2:3] (2) / b[1:2] (2)
replace a[3:4] (b) / b[2:3] (3)
equal a[4:5] (4) / b[3:4] (4)
replace a[5:6] (c) / b[4:5] (5)
$ diff2 C B
replace c[0:1] (x) / b[0:1] (1)
equal c[1:2] (2) / b[1:2] (2)
replace c[2:3] (y) / b[2:3] (3)
equal c[3:5] (45) / b[3:5] (45)
delete c[5:6] (z) / b[5:5] ()
$ diff3 A B C
C a[0:1] (1) / b[0:1] (1) / c[0:1] (x)
A a[1:2] (a) / b[1:1] () / c[1:1] ()
E a[2:3] (2) / b[1:2] (2) / c[1:2] (2)
N a[3:4] (b) / b[2:3] (3) / c[2:3] (y)
E a[4:5] (4) / b[3:4] (4) / c[3:4] (4)
A a[5:6] (c) / b[4:5] (5) / c[4:5] (5)
C a[6:6] () / b[5:5] () / c[5:6] (z)
===========================================================
|