diff options
-rw-r--r-- | slice/slice.go | 1 | ||||
-rw-r--r-- | slice/slice_test.go | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/slice/slice.go b/slice/slice.go index 6d7cf10..05441c8 100644 --- a/slice/slice.go +++ b/slice/slice.go @@ -46,6 +46,7 @@ func Patch(source Slice, delta Delta) (target Slice) { fill += len(ins.Value) prev = ins.Idx + len(ins.Value) } + copy(target[fill:], temp[tpos:]) return } diff --git a/slice/slice_test.go b/slice/slice_test.go index f6aecbc..0cf1c40 100644 --- a/slice/slice_test.go +++ b/slice/slice_test.go @@ -19,3 +19,13 @@ func TestPatch(t *testing.T) { actual := Patch(source, patch) testutils.AssertSame(t, target, actual, "Target obtained from patch application") } + +func TestEmptyPatch(t *testing.T) { + source := Slice{1, 2, 3, 4} + target := Slice{1, 2, 3, 4} + patch := Diff(source, target) + testutils.AssertSame(t, *new([]Del), patch.Del, "Patch del part") + testutils.AssertSame(t, *new([]Ins), patch.Ins, "Patch ins part") + actual := Patch(source, patch) + testutils.AssertSame(t, target, actual, "Target obtained from patch application") +} |