vendor tsgo
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
package fourslash_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/microsoft/typescript-go/internal/core"
|
||||
"github.com/microsoft/typescript-go/internal/fourslash"
|
||||
"github.com/microsoft/typescript-go/internal/ls/lsutil"
|
||||
"github.com/microsoft/typescript-go/internal/lsp/lsproto"
|
||||
"github.com/microsoft/typescript-go/internal/testutil"
|
||||
"gotest.tools/v3/assert"
|
||||
)
|
||||
|
||||
func TestJSDocSnippetCompletionForFunction(t *testing.T) {
|
||||
t.Parallel()
|
||||
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
||||
const content = `/*completion*/ */
|
||||
function abcdef(x, y) { }
|
||||
`
|
||||
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
||||
defer done()
|
||||
f.GoToMarker(t, "completion")
|
||||
f.Insert(t, "/**")
|
||||
|
||||
list := f.GetCompletions(t, nil /*userPreferences*/)
|
||||
assert.Assert(t, list != nil)
|
||||
assert.Equal(t, len(list.Items), 1)
|
||||
|
||||
item := list.Items[0]
|
||||
assert.Equal(t, item.Label, "/** */")
|
||||
assert.DeepEqual(t, item.Kind, new(lsproto.CompletionItemKindText))
|
||||
assert.DeepEqual(t, item.Detail, new("JSDoc comment"))
|
||||
assert.DeepEqual(t, item.SortText, new("\x00"))
|
||||
assert.DeepEqual(t, item.CommitCharacters, &[]string{})
|
||||
assert.DeepEqual(t, item.InsertTextFormat, new(lsproto.InsertTextFormatSnippet))
|
||||
assert.Assert(t, item.TextEdit != nil)
|
||||
assert.Assert(t, item.TextEdit.InsertReplaceEdit != nil)
|
||||
assert.Equal(t, item.TextEdit.InsertReplaceEdit.NewText, "/**\n * $0\n * @param x ${1}\n * @param y ${2}\n */")
|
||||
assert.DeepEqual(t, item.TextEdit.InsertReplaceEdit.Insert, lsproto.Range{
|
||||
Start: lsproto.Position{Line: 0, Character: 0},
|
||||
End: lsproto.Position{Line: 0, Character: 6},
|
||||
})
|
||||
assert.DeepEqual(t, item.TextEdit.InsertReplaceEdit.Replace, lsproto.Range{
|
||||
Start: lsproto.Position{Line: 0, Character: 0},
|
||||
End: lsproto.Position{Line: 0, Character: 6},
|
||||
})
|
||||
}
|
||||
|
||||
func TestJSDocSnippetCompletionForReturn(t *testing.T) {
|
||||
t.Parallel()
|
||||
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
||||
const content = `/*completion*/ */
|
||||
function abcdef(x) { return x; }
|
||||
`
|
||||
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
||||
defer done()
|
||||
f.GoToMarker(t, "completion")
|
||||
f.Insert(t, "/**")
|
||||
|
||||
list := f.GetCompletions(t, nil /*userPreferences*/)
|
||||
assert.Assert(t, list != nil)
|
||||
assert.Equal(t, len(list.Items), 1)
|
||||
assert.Equal(t, list.Items[0].TextEdit.InsertReplaceEdit.NewText, "/**\n * $0\n * @param x ${1}\n * @returns ${2}\n */")
|
||||
}
|
||||
|
||||
func TestJSDocSnippetCompletionPreservesCRLF(t *testing.T) {
|
||||
t.Parallel()
|
||||
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
||||
const content = "/*completion*/ */\r\nfunction abcdef(x) { return x; }\r\n"
|
||||
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
||||
defer done()
|
||||
f.GoToMarker(t, "completion")
|
||||
f.Insert(t, "/**")
|
||||
|
||||
userPreferences := lsutil.NewDefaultUserPreferences()
|
||||
userPreferences.FormatCodeSettings.NewLineCharacter = "\r\n"
|
||||
list := f.GetCompletions(t, &userPreferences)
|
||||
assert.Assert(t, list != nil)
|
||||
assert.Equal(t, len(list.Items), 1)
|
||||
assert.Equal(t, list.Items[0].TextEdit.InsertReplaceEdit.NewText, "/**\r\n * $0\r\n * @param x ${1}\r\n * @returns ${2}\r\n */")
|
||||
}
|
||||
|
||||
func TestJSDocSnippetCompletionRespectsGenerateReturnPreference(t *testing.T) {
|
||||
t.Parallel()
|
||||
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
||||
const content = `/*completion*/ */
|
||||
function abcdef(x) { return x; }
|
||||
`
|
||||
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
||||
defer done()
|
||||
f.GoToMarker(t, "completion")
|
||||
f.Insert(t, "/**")
|
||||
|
||||
userPreferences := lsutil.NewDefaultUserPreferences()
|
||||
userPreferences.GenerateReturnInDocTemplate = core.TSFalse
|
||||
list := f.GetCompletions(t, &userPreferences)
|
||||
assert.Assert(t, list != nil)
|
||||
assert.Equal(t, len(list.Items), 1)
|
||||
assert.Equal(t, list.Items[0].TextEdit.InsertReplaceEdit.NewText, "/**\n * $0\n * @param x ${1}\n */")
|
||||
}
|
||||
|
||||
func TestJSDocSnippetCompletionRespectsEnabledPreference(t *testing.T) {
|
||||
t.Parallel()
|
||||
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
||||
const content = `/*completion*/ */
|
||||
function abcdef(x) { }
|
||||
`
|
||||
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
||||
defer done()
|
||||
f.GoToMarker(t, "completion")
|
||||
f.Insert(t, "/**")
|
||||
|
||||
userPreferences := lsutil.NewDefaultUserPreferences()
|
||||
userPreferences.EnableJSDocCompletions = core.TSFalse
|
||||
list := f.GetCompletions(t, &userPreferences)
|
||||
if list != nil {
|
||||
for _, item := range list.Items {
|
||||
assert.Assert(t, item.Label != "/** */")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestJSDocSnippetCompletionForClass(t *testing.T) {
|
||||
t.Parallel()
|
||||
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
||||
const content = `/*completion*/
|
||||
class C {
|
||||
}
|
||||
`
|
||||
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
||||
defer done()
|
||||
f.GoToMarker(t, "completion")
|
||||
f.Insert(t, "/**")
|
||||
|
||||
list := f.GetCompletions(t, nil /*userPreferences*/)
|
||||
assert.Assert(t, list != nil)
|
||||
assert.Equal(t, len(list.Items), 1)
|
||||
assert.Equal(t, list.Items[0].TextEdit.InsertReplaceEdit.NewText, "/**\n * $0\n */")
|
||||
}
|
||||
|
||||
func TestJSDocSnippetCompletionNotInNonEmptyComment(t *testing.T) {
|
||||
t.Parallel()
|
||||
defer testutil.RecoverAndFail(t, "Panic on fourslash test")
|
||||
const content = `/** text /*completion*/ */
|
||||
function abcdef(x) { }
|
||||
`
|
||||
f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content)
|
||||
defer done()
|
||||
|
||||
f.VerifyCompletions(t, "completion", nil)
|
||||
}
|
||||
Reference in New Issue
Block a user