1
0
mirror of https://github.com/golang/go synced 2024-11-19 04:54:41 -07:00
go/internal/lsp/diff/diff_test.go
Rebecca Stambler 0e66cc6fab internal/lsp/diff: fix bug that adds extra line to files on format
Small changes to handle the last line in the diff library, LSP tests,
and diff to text edits conversion.

Fixes golang/go#30137

Change-Id: Iff0e53a04c2dabf6f54eb7c738b4c0837f16efba
Reviewed-on: https://go-review.googlesource.com/c/162217
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
2019-02-13 04:28:36 +00:00

58 lines
1.5 KiB
Go

// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package diff
import (
"reflect"
"testing"
)
func TestDiff(t *testing.T) {
for _, tt := range []struct {
a, b []string
lines []*Op
operations []*Op
}{
{
a: []string{"A", "B", "C", "A", "B", "B", "A"},
b: []string{"C", "B", "A", "B", "A", "C"},
operations: []*Op{
&Op{Kind: Delete, I1: 0, I2: 1, J1: 0, J2: 0},
&Op{Kind: Delete, I1: 1, I2: 2, J1: 0, J2: 0},
&Op{Kind: Insert, Content: "B", I1: 3, I2: 3, J1: 1, J2: 2},
&Op{Kind: Delete, I1: 5, I2: 6, J1: 4, J2: 4},
&Op{Kind: Insert, Content: "C", I1: 7, I2: 7, J1: 5, J2: 6},
},
},
{
a: []string{"A", "B"},
b: []string{"A", "C", ""},
operations: []*Op{
&Op{Kind: Delete, I1: 1, I2: 2, J1: 1, J2: 1},
&Op{Kind: Insert, Content: "C", I1: 2, I2: 2, J1: 1, J2: 2},
&Op{Kind: Insert, Content: "", I1: 2, I2: 2, J1: 2, J2: 3},
},
},
} {
ops := Operations(tt.a, tt.b)
if len(ops) != len(tt.operations) {
t.Fatalf("expected %v operations, got %v", len(tt.operations), len(ops))
}
for i, got := range ops {
want := tt.operations[i]
if !reflect.DeepEqual(want, got) {
t.Errorf("expected %v, got %v", want, got)
}
}
b := ApplyEdits(tt.a, tt.operations)
for i, want := range tt.b {
got := b[i]
if got != want {
t.Errorf("expected %v got %v", want, got)
}
}
}
}