@@ -9,9 +9,10 @@ import (
9
9
10
10
var _ = Describe ("Diff.Calculate" , func () {
11
11
testDiff := func (left , right interface {}, expectedOps []Op ) {
12
- Expect (Diff {Left : left , Right : right }.Calculate ()).To (Equal (Ops (expectedOps )))
12
+ diffOps := Diff {Left : left , Right : right }.Calculate ()
13
+ Expect (diffOps ).To (Equal (Ops (expectedOps )))
13
14
14
- result , err := Ops (expectedOps ).Apply (left )
15
+ result , err := Ops (diffOps ).Apply (left )
15
16
Expect (err ).ToNot (HaveOccurred ())
16
17
17
18
if right == nil { // gomega does not allow nil==nil comparison
@@ -38,18 +39,25 @@ var _ = Describe("Diff.Calculate", func() {
38
39
})
39
40
40
41
It ("can replace doc root" , func () {
41
- testDiff (nil , "a" , []Op {ReplaceOp {Path : MustNewPointerFromString ("" ), Value : "a" }})
42
+ testDiff (nil , "a" , []Op {
43
+ TestOp {Path : MustNewPointerFromString ("" ), Value : nil },
44
+ ReplaceOp {Path : MustNewPointerFromString ("" ), Value : "a" },
45
+ })
42
46
})
43
47
44
48
It ("can replace doc root with nil" , func () {
45
- testDiff ("a" , nil , []Op {ReplaceOp {Path : MustNewPointerFromString ("" ), Value : nil }})
49
+ testDiff ("a" , nil , []Op {
50
+ TestOp {Path : MustNewPointerFromString ("" ), Value : "a" },
51
+ ReplaceOp {Path : MustNewPointerFromString ("" ), Value : nil },
52
+ })
46
53
})
47
54
48
55
It ("can diff maps" , func () {
49
56
testDiff (
50
57
map [interface {}]interface {}{"a" : 123 },
51
58
map [interface {}]interface {}{"a" : 124 },
52
59
[]Op {
60
+ TestOp {Path : MustNewPointerFromString ("/a" ), Value : 123 },
53
61
ReplaceOp {Path : MustNewPointerFromString ("/a" ), Value : 124 },
54
62
},
55
63
)
@@ -58,7 +66,9 @@ var _ = Describe("Diff.Calculate", func() {
58
66
map [interface {}]interface {}{"a" : 123 , "b" : 456 },
59
67
map [interface {}]interface {}{"a" : 124 , "c" : 456 },
60
68
[]Op {
69
+ TestOp {Path : MustNewPointerFromString ("/a" ), Value : 123 },
61
70
ReplaceOp {Path : MustNewPointerFromString ("/a" ), Value : 124 },
71
+ TestOp {Path : MustNewPointerFromString ("/b" ), Value : 456 },
62
72
RemoveOp {Path : MustNewPointerFromString ("/b" )},
63
73
ReplaceOp {Path : MustNewPointerFromString ("/c?" ), Value : 456 },
64
74
},
@@ -68,7 +78,9 @@ var _ = Describe("Diff.Calculate", func() {
68
78
map [interface {}]interface {}{"a" : 123 , "b" : 456 },
69
79
map [interface {}]interface {}{"a" : 124 },
70
80
[]Op {
81
+ TestOp {Path : MustNewPointerFromString ("/a" ), Value : 123 },
71
82
ReplaceOp {Path : MustNewPointerFromString ("/a" ), Value : 124 },
83
+ TestOp {Path : MustNewPointerFromString ("/b" ), Value : 456 },
72
84
RemoveOp {Path : MustNewPointerFromString ("/b" )},
73
85
},
74
86
)
@@ -77,7 +89,9 @@ var _ = Describe("Diff.Calculate", func() {
77
89
map [interface {}]interface {}{"a" : 123 , "b" : 456 },
78
90
map [interface {}]interface {}{},
79
91
[]Op {
92
+ TestOp {Path : MustNewPointerFromString ("/a" ), Value : 123 },
80
93
RemoveOp {Path : MustNewPointerFromString ("/a" )},
94
+ TestOp {Path : MustNewPointerFromString ("/b" ), Value : 456 },
81
95
RemoveOp {Path : MustNewPointerFromString ("/b" )},
82
96
},
83
97
)
@@ -86,6 +100,7 @@ var _ = Describe("Diff.Calculate", func() {
86
100
map [interface {}]interface {}{"a" : 123 },
87
101
map [interface {}]interface {}{"a" : nil },
88
102
[]Op {
103
+ TestOp {Path : MustNewPointerFromString ("/a" ), Value : 123 },
89
104
ReplaceOp {Path : MustNewPointerFromString ("/a" ), Value : nil },
90
105
},
91
106
)
@@ -94,7 +109,9 @@ var _ = Describe("Diff.Calculate", func() {
94
109
map [interface {}]interface {}{"a" : 123 , "b" : map [interface {}]interface {}{"a" : 1024 , "b" : 4056 }},
95
110
map [interface {}]interface {}{"a" : 124 , "b" : map [interface {}]interface {}{"a" : 1024 , "c" : 4056 }},
96
111
[]Op {
112
+ TestOp {Path : MustNewPointerFromString ("/a" ), Value : 123 },
97
113
ReplaceOp {Path : MustNewPointerFromString ("/a" ), Value : 124 },
114
+ TestOp {Path : MustNewPointerFromString ("/b/b" ), Value : 4056 },
98
115
RemoveOp {Path : MustNewPointerFromString ("/b/b" )},
99
116
ReplaceOp {Path : MustNewPointerFromString ("/b/c?" ), Value : 4056 },
100
117
},
@@ -104,6 +121,7 @@ var _ = Describe("Diff.Calculate", func() {
104
121
map [interface {}]interface {}{"a" : 123 },
105
122
"a" ,
106
123
[]Op {
124
+ TestOp {Path : MustNewPointerFromString ("" ), Value : map [interface {}]interface {}{"a" : 123 }},
107
125
ReplaceOp {Path : MustNewPointerFromString ("" ), Value : "a" },
108
126
},
109
127
)
@@ -112,6 +130,7 @@ var _ = Describe("Diff.Calculate", func() {
112
130
"a" ,
113
131
map [interface {}]interface {}{"a" : 123 },
114
132
[]Op {
133
+ TestOp {Path : MustNewPointerFromString ("" ), Value : "a" },
115
134
ReplaceOp {Path : MustNewPointerFromString ("" ), Value : map [interface {}]interface {}{"a" : 123 }},
116
135
},
117
136
)
@@ -122,6 +141,7 @@ var _ = Describe("Diff.Calculate", func() {
122
141
[]interface {}{"a" , 123 },
123
142
[]interface {}{"b" , 123 },
124
143
[]Op {
144
+ TestOp {Path : MustNewPointerFromString ("/0" ), Value : "a" },
125
145
ReplaceOp {Path : MustNewPointerFromString ("/0" ), Value : "b" },
126
146
},
127
147
)
@@ -130,6 +150,7 @@ var _ = Describe("Diff.Calculate", func() {
130
150
[]interface {}{"a" },
131
151
[]interface {}{"b" , 123 , 456 },
132
152
[]Op {
153
+ TestOp {Path : MustNewPointerFromString ("/0" ), Value : "a" },
133
154
ReplaceOp {Path : MustNewPointerFromString ("/0" ), Value : "b" },
134
155
ReplaceOp {Path : MustNewPointerFromString ("/-" ), Value : 123 },
135
156
ReplaceOp {Path : MustNewPointerFromString ("/-" ), Value : 456 },
@@ -140,8 +161,11 @@ var _ = Describe("Diff.Calculate", func() {
140
161
[]interface {}{"a" , 123 , 456 },
141
162
[]interface {}{"b" },
142
163
[]Op {
164
+ TestOp {Path : MustNewPointerFromString ("/0" ), Value : "a" },
143
165
ReplaceOp {Path : MustNewPointerFromString ("/0" ), Value : "b" },
166
+ TestOp {Path : MustNewPointerFromString ("/1" ), Value : 123 },
144
167
RemoveOp {Path : MustNewPointerFromString ("/1" )},
168
+ TestOp {Path : MustNewPointerFromString ("/1" ), Value : 456 },
145
169
RemoveOp {Path : MustNewPointerFromString ("/1" )},
146
170
},
147
171
)
@@ -150,7 +174,9 @@ var _ = Describe("Diff.Calculate", func() {
150
174
[]interface {}{123 , 456 },
151
175
[]interface {}{},
152
176
[]Op {
177
+ TestOp {Path : MustNewPointerFromString ("/0" ), Value : 123 },
153
178
RemoveOp {Path : MustNewPointerFromString ("/0" )},
179
+ TestOp {Path : MustNewPointerFromString ("/0" ), Value : 456 },
154
180
RemoveOp {Path : MustNewPointerFromString ("/0" )},
155
181
},
156
182
)
@@ -159,16 +185,19 @@ var _ = Describe("Diff.Calculate", func() {
159
185
[]interface {}{123 , 456 },
160
186
[]interface {}{123 , "a" , 456 }, // TODO unoptimized insertion
161
187
[]Op {
188
+ TestOp {Path : MustNewPointerFromString ("/1" ), Value : 456 },
162
189
ReplaceOp {Path : MustNewPointerFromString ("/1" ), Value : "a" },
163
190
ReplaceOp {Path : MustNewPointerFromString ("/-" ), Value : 456 },
164
191
},
165
192
)
166
193
167
194
testDiff (
168
195
[]interface {}{[]interface {}{456 , 789 }},
169
- []interface {}{[]interface {}{789 }},
196
+ []interface {}{[]interface {}{789 }}, // TODO unoptimized deletion
170
197
[]Op {
198
+ TestOp {Path : MustNewPointerFromString ("/0/0" ), Value : 456 },
171
199
ReplaceOp {Path : MustNewPointerFromString ("/0/0" ), Value : 789 },
200
+ TestOp {Path : MustNewPointerFromString ("/0/1" ), Value : 789 },
172
201
RemoveOp {Path : MustNewPointerFromString ("/0/1" )},
173
202
},
174
203
)
@@ -177,6 +206,7 @@ var _ = Describe("Diff.Calculate", func() {
177
206
[]interface {}{"a" , 123 },
178
207
"a" ,
179
208
[]Op {
209
+ TestOp {Path : MustNewPointerFromString ("" ), Value : []interface {}{"a" , 123 }},
180
210
ReplaceOp {Path : MustNewPointerFromString ("" ), Value : "a" },
181
211
},
182
212
)
@@ -185,6 +215,7 @@ var _ = Describe("Diff.Calculate", func() {
185
215
"a" ,
186
216
[]interface {}{"a" , 123 },
187
217
[]Op {
218
+ TestOp {Path : MustNewPointerFromString ("" ), Value : "a" },
188
219
ReplaceOp {Path : MustNewPointerFromString ("" ), Value : []interface {}{"a" , 123 }},
189
220
},
190
221
)
0 commit comments