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  }