github.com/tiagovtristao/plz@v13.4.0+incompatible/tools/build_langserver/langserver/reformat_test.go (about) 1 package langserver 2 3 import ( 4 "github.com/stretchr/testify/assert" 5 "testing" 6 ) 7 8 func TestGetFormatEdits(t *testing.T) { 9 analyzer.State.Config.Parse.BuildFileName = append(analyzer.State.Config.Parse.BuildFileName, 10 []string{"reformat.build", "example.build"}...) 11 edits, err := handler.getFormatEdits(reformatURI) 12 assert.NoError(t, err) 13 assert.Equal(t, 5, len(edits)) 14 15 assert.Equal(t, "python_library(\n", edits[0].NewText) 16 assert.Equal(t, ` name = "test",`+"\n", edits[1].NewText) 17 assert.Equal(t, ` srcs = ["utils_test.go"],`+"\n", edits[2].NewText) 18 assert.Equal(t, ")\n", edits[3].NewText) 19 assert.Equal(t, "", edits[4].NewText) 20 for _, edit := range edits { 21 t.Log(edit.NewText) 22 t.Log(edit.Range) 23 } 24 25 edits, err = handler.getFormatEdits(exampleBuildURI) 26 assert.NoError(t, err) 27 expected := `blah = "blah"` + "\n" 28 assert.Equal(t, expected, edits[len(edits)-2].NewText) 29 } 30 31 func TestGetFormatEdits2(t *testing.T) { 32 analyzer.State.Config.Parse.BuildFileName = append(analyzer.State.Config.Parse.BuildFileName, 33 []string{"reformat2.build"}...) 34 edits, err := handler.getFormatEdits(reformat2URI) 35 assert.NoError(t, err) 36 assert.Equal(t, 14, len(edits)) 37 38 assert.Equal(t, " srcs = [\n", edits[0].NewText) 39 assert.Equal(t, ` "handler_test.go",`+"\n", edits[1].NewText) 40 assert.Equal(t, ` "analyzer_test.go",`+"\n", edits[2].NewText) 41 assert.Equal(t, ` "hover_test.go",`+"\n", edits[3].NewText) 42 assert.Equal(t, " ],\n", edits[4].NewText) 43 } 44 45 func TestGetEdits(t *testing.T) { 46 // test cases for replacement 47 edits := getEdits(`blah="hello"`, `blah = "blah"`+"\n") 48 assert.Equal(t, 2, len(edits)) 49 assert.Equal(t, 0, edits[0].Range.Start.Line, edits[0].Range.End.Line) 50 assert.Equal(t, 0, edits[0].Range.Start.Character) 51 assert.Equal(t, 11, edits[0].Range.End.Character) 52 53 after := `subinclude({ 54 "foo": "bar", 55 "blah": 1, 56 }) 57 ` 58 edits = getEdits(`subinclude({"foo": "bar", "blah":1})`, after) 59 assert.Equal(t, "subinclude({\n", edits[0].NewText) 60 assert.Equal(t, 35, edits[0].Range.End.Character) 61 62 assert.Equal(t, ` "foo": "bar",`+"\n", edits[1].NewText) 63 assert.Equal(t, 1, edits[1].Range.End.Line, edits[1].Range.Start.Line) 64 65 assert.Equal(t, ` "blah": 1,`+"\n", edits[2].NewText) 66 assert.Equal(t, 2, edits[2].Range.End.Line, edits[2].Range.Start.Line) 67 68 assert.Equal(t, ` "blah": 1,`+"\n", edits[2].NewText) 69 assert.Equal(t, 2, edits[2].Range.End.Line, edits[2].Range.Start.Line) 70 71 // test cases for deletion 72 edits = getEdits(`blah="hello"`, "") 73 assert.Equal(t, 0, edits[0].Range.End.Line, edits[0].Range.Start.Line) 74 assert.Equal(t, 11, edits[0].Range.End.Character) 75 assert.Equal(t, "", edits[0].NewText) 76 77 edits = getEdits(`blah="hello"`+"\n", "") 78 assert.Equal(t, 0, edits[0].Range.Start.Line) 79 assert.Equal(t, 1, edits[0].Range.End.Line) 80 assert.Equal(t, 0, edits[0].Range.End.Character) 81 assert.Equal(t, "", edits[0].NewText) 82 83 edits = getEdits(`blah="hello"`+"\n"+"blah", `blah="hello"`) 84 assert.Equal(t, `blah="hello"`, edits[0].NewText) 85 assert.Equal(t, 0, edits[0].Range.Start.Line) 86 assert.Equal(t, 1, edits[0].Range.End.Line) 87 88 // Test for insertion 89 edits = getEdits("", "\n"+"bar") 90 91 assert.Equal(t, "\n", edits[0].NewText) 92 assert.Equal(t, 0, edits[0].Range.Start.Line) 93 assert.Equal(t, 0, edits[0].Range.End.Line) 94 assert.Equal(t, "bar\n", edits[1].NewText) 95 assert.Equal(t, 1, edits[1].Range.Start.Line) 96 assert.Equal(t, 1, edits[1].Range.End.Line) 97 }