@@ -544,12 +544,7 @@ func (f *FourslashTest) VerifyCompletions(t *testing.T, markerInput MarkerInput,
544544}
545545
546546func (f * FourslashTest ) verifyCompletionsWorker (t * testing.T , expected * CompletionsExpectedList ) {
547- var prefix string
548- if f .lastKnownMarkerName != nil {
549- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
550- } else {
551- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
552- }
547+ prefix := f .getCurrentPositionPrefix ()
553548 params := & lsproto.CompletionParams {
554549 TextDocument : lsproto.TextDocumentIdentifier {
555550 Uri : ls .FileNameToDocumentURI (f .activeFilename ),
@@ -564,12 +559,11 @@ func (f *FourslashTest) verifyCompletionsWorker(t *testing.T, expected *Completi
564559 if ! resultOk {
565560 t .Fatalf (prefix + "Unexpected response type for completion request: %T" , resMsg .AsResponse ().Result )
566561 }
567- f .verifyCompletionsResult (t , f . currentCaretPosition , result .List , expected , prefix )
562+ f .verifyCompletionsResult (t , result .List , expected , prefix )
568563}
569564
570565func (f * FourslashTest ) verifyCompletionsResult (
571566 t * testing.T ,
572- position lsproto.Position ,
573567 actual * lsproto.CompletionList ,
574568 expected * CompletionsExpectedList ,
575569 prefix string ,
@@ -932,17 +926,11 @@ func (f *FourslashTest) VerifyBaselineHover(t *testing.T) {
932926 }
933927
934928 resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentHoverInfo , params )
935- var prefix string
936- if f .lastKnownMarkerName != nil {
937- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
938- } else {
939- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
940- }
941929 if resMsg == nil {
942- t .Fatalf (prefix + "Nil response received for quick info request" , f .lastKnownMarkerName )
930+ t .Fatalf (f . getCurrentPositionPrefix () + "Nil response received for quick info request" , f .lastKnownMarkerName )
943931 }
944932 if ! resultOk {
945- t .Fatalf (prefix + "Unexpected response type for quick info request: %T" , resMsg .AsResponse ().Result )
933+ t .Fatalf (f . getCurrentPositionPrefix () + "Unexpected response type for quick info request: %T" , resMsg .AsResponse ().Result )
946934 }
947935
948936 return markerAndItem [* lsproto.Hover ]{Marker : marker , Item : result .Hover }, true
@@ -1025,17 +1013,11 @@ func (f *FourslashTest) VerifyBaselineSignatureHelp(t *testing.T) {
10251013 }
10261014
10271015 resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentSignatureHelpInfo , params )
1028- var prefix string
1029- if f .lastKnownMarkerName != nil {
1030- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
1031- } else {
1032- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
1033- }
10341016 if resMsg == nil {
1035- t .Fatalf (prefix + "Nil response received for signature help request" , f .lastKnownMarkerName )
1017+ t .Fatalf (f . getCurrentPositionPrefix () + "Nil response received for signature help request" , f .lastKnownMarkerName )
10361018 }
10371019 if ! resultOk {
1038- t .Fatalf (prefix + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
1020+ t .Fatalf (f . getCurrentPositionPrefix () + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
10391021 }
10401022
10411023 return markerAndItem [* lsproto.SignatureHelp ]{Marker : marker , Item : result .SignatureHelp }, true
@@ -1319,8 +1301,7 @@ func (f *FourslashTest) getScriptInfo(fileName string) *scriptInfo {
13191301func (f * FourslashTest ) VerifyQuickInfoAt (t * testing.T , marker string , expectedText string , expectedDocumentation string ) {
13201302 f .GoToMarker (t , marker )
13211303 hover := f .getQuickInfoAtCurrentPosition (t )
1322-
1323- f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , fmt .Sprintf ("At marker '%s': " , marker ))
1304+ f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , f .getCurrentPositionPrefix ())
13241305}
13251306
13261307func (f * FourslashTest ) getQuickInfoAtCurrentPosition (t * testing.T ) * lsproto.Hover {
@@ -1392,11 +1373,77 @@ func (f *FourslashTest) quickInfoIsEmpty(t *testing.T) (bool, *lsproto.Hover) {
13921373
13931374func (f * FourslashTest ) VerifyQuickInfoIs (t * testing.T , expectedText string , expectedDocumentation string ) {
13941375 hover := f .getQuickInfoAtCurrentPosition (t )
1395- var prefix string
1376+ f .verifyHoverContent (t , hover .Contents , expectedText , expectedDocumentation , f .getCurrentPositionPrefix ())
1377+ }
1378+
1379+ type SignatureHelpCase struct {
1380+ Context * lsproto.SignatureHelpContext
1381+ MarkerInput MarkerInput
1382+ Expected * lsproto.SignatureHelp
1383+ }
1384+
1385+ func (f * FourslashTest ) VerifySignatureHelp (t * testing.T , signatureHelpCases ... * SignatureHelpCase ) {
1386+ for _ , option := range signatureHelpCases {
1387+ switch marker := option .MarkerInput .(type ) {
1388+ case string :
1389+ f .GoToMarker (t , marker )
1390+ f .verifySignatureHelp (t , option .Context , option .Expected )
1391+ case * Marker :
1392+ f .goToMarker (t , marker )
1393+ f .verifySignatureHelp (t , option .Context , option .Expected )
1394+ case []string :
1395+ for _ , markerName := range marker {
1396+ f .GoToMarker (t , markerName )
1397+ f .verifySignatureHelp (t , option .Context , option .Expected )
1398+ }
1399+ case []* Marker :
1400+ for _ , marker := range marker {
1401+ f .goToMarker (t , marker )
1402+ f .verifySignatureHelp (t , option .Context , option .Expected )
1403+ }
1404+ case nil :
1405+ f .verifySignatureHelp (t , option .Context , option .Expected )
1406+ default :
1407+ t .Fatalf ("Invalid marker input type: %T. Expected string, *Marker, []string, or []*Marker." , option .MarkerInput )
1408+ }
1409+ }
1410+ }
1411+
1412+ func (f * FourslashTest ) verifySignatureHelp (
1413+ t * testing.T ,
1414+ context * lsproto.SignatureHelpContext ,
1415+ expected * lsproto.SignatureHelp ,
1416+ ) {
1417+ prefix := f .getCurrentPositionPrefix ()
1418+ params := & lsproto.SignatureHelpParams {
1419+ TextDocument : lsproto.TextDocumentIdentifier {
1420+ Uri : ls .FileNameToDocumentURI (f .activeFilename ),
1421+ },
1422+ Position : f .currentCaretPosition ,
1423+ Context : context ,
1424+ }
1425+ resMsg , result , resultOk := sendRequest (t , f , lsproto .TextDocumentSignatureHelpInfo , params )
1426+ if resMsg == nil {
1427+ t .Fatalf (prefix + "Nil response received for signature help request" , f .lastKnownMarkerName )
1428+ }
1429+ if ! resultOk {
1430+ t .Fatalf (prefix + "Unexpected response type for signature help request: %T" , resMsg .AsResponse ().Result )
1431+ }
1432+ f .verifySignatureHelpResult (t , result .SignatureHelp , expected , prefix )
1433+ }
1434+
1435+ func (f * FourslashTest ) verifySignatureHelpResult (
1436+ t * testing.T ,
1437+ actual * lsproto.SignatureHelp ,
1438+ expected * lsproto.SignatureHelp ,
1439+ prefix string ,
1440+ ) {
1441+ assertDeepEqual (t , actual , expected , prefix + " SignatureHelp mismatch" )
1442+ }
1443+
1444+ func (f * FourslashTest ) getCurrentPositionPrefix () string {
13961445 if f .lastKnownMarkerName != nil {
1397- prefix = fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
1398- } else {
1399- prefix = fmt .Sprintf ("At position (Ln %d, Col %d): " , f .currentCaretPosition .Line , f .currentCaretPosition .Character )
1446+ return fmt .Sprintf ("At marker '%s': " , * f .lastKnownMarkerName )
14001447 }
1401- f . verifyHoverContent ( t , hover . Contents , expectedText , expectedDocumentation , prefix )
1448+ return fmt . Sprintf ( "At position (Ln %d, Col %d): " , f . currentCaretPosition . Line , f . currentCaretPosition . Character )
14021449}
0 commit comments