33using EmmyLua . LanguageServer . Framework . Protocol . Message . CallHierarchy ;
44using EmmyLua . LanguageServer . Framework . Protocol . Message . DocumentSymbol ;
55using EmmyLua . LanguageServer . Framework . Protocol . Model ;
6- using EmmyLua . LanguageServer . Framework . Protocol . Model . Kind ;
76using EmmyLua . LanguageServer . Framework . Protocol . Model . TextDocument ;
87using EmmyLua . LanguageServer . Framework . Server . Handler ;
98using EmmyLua . LanguageServer . Framework . Tests . TestBase ;
@@ -16,7 +15,8 @@ public class CallHierarchyHandlerTests : TestHandlerBase
1615{
1716 private class TestCallHierarchyHandler : CallHierarchyHandlerBase
1817 {
19- protected override Task < CallHierarchyPrepareResponse ? > CallHierarchyPrepare ( CallHierarchyPrepareParams request , CancellationToken token )
18+ protected override Task < CallHierarchyPrepareResponse ? > CallHierarchyPrepare ( CallHierarchyPrepareParams request ,
19+ CancellationToken token )
2020 {
2121 var items = new List < CallHierarchyItem >
2222 {
@@ -25,95 +25,72 @@ private class TestCallHierarchyHandler : CallHierarchyHandlerBase
2525 Name = "testFunction" ,
2626 Kind = SymbolKind . Function ,
2727 Uri = "file:///test.txt" ,
28- Range = new LocationRange
29- {
30- Start = new Position { Line = 5 , Character = 0 } ,
31- End = new Position { Line = 10 , Character = 0 }
32- } ,
33- SelectionRange = new LocationRange
34- {
35- Start = new Position { Line = 5 , Character = 9 } ,
36- End = new Position { Line = 5 , Character = 21 }
37- }
28+ Range = new DocumentRange (
29+ new Position { Line = 5 , Character = 0 } ,
30+ new Position { Line = 10 , Character = 0 }
31+ ) ,
32+ SelectionRange = new DocumentRange (
33+ new Position { Line = 5 , Character = 9 } ,
34+ new Position { Line = 5 , Character = 21 }
35+ )
3836 }
3937 } ;
4038
4139 return Task . FromResult < CallHierarchyPrepareResponse ? > ( new CallHierarchyPrepareResponse ( items ) ) ;
4240 }
4341
44- protected override Task < CallHierarchyIncomingCallsResponse > CallHierarchyIncomingCalls ( CallHierarchyIncomingCallsParams request , CancellationToken token )
42+ protected override Task < CallHierarchyIncomingCallsResponse > CallHierarchyIncomingCalls (
43+ CallHierarchyIncomingCallsParams request , CancellationToken token )
4544 {
4645 var calls = new List < CallHierarchyIncomingCall >
4746 {
4847 new CallHierarchyIncomingCall
4948 {
50- From = new CallHierarchyItem
49+ From = new Location
5150 {
52- Name = "caller" ,
53- Kind = SymbolKind . Function ,
5451 Uri = "file:///caller.txt" ,
55- Range = new LocationRange
56- {
57- Start = new Position { Line = 15 , Character = 0 } ,
58- End = new Position { Line = 20 , Character = 0 }
59- } ,
60- SelectionRange = new LocationRange
61- {
62- Start = new Position { Line = 15 , Character = 9 } ,
63- End = new Position { Line = 15 , Character = 15 }
64- }
52+ Range = new DocumentRange (
53+ new Position { Line = 15 , Character = 0 } ,
54+ new Position { Line = 20 , Character = 0 }
55+ )
6556 } ,
66- FromRanges = new List < LocationRange >
67- {
68- new LocationRange
69- {
70- Start = new Position { Line = 17 , Character = 4 } ,
71- End = new Position { Line = 17 , Character = 16 }
72- }
73- }
57+ FromRanges = new DocumentRange (
58+ new Position { Line = 17 , Character = 4 } ,
59+ new Position { Line = 17 , Character = 16 }
60+ )
7461 }
7562 } ;
7663
77- return Task . FromResult < CallHierarchyIncomingCallsResponse ? > ( new CallHierarchyIncomingCallsResponse ( calls ) ) ;
64+ return Task . FromResult ( new CallHierarchyIncomingCallsResponse ( calls ) ) ;
7865 }
7966
80- protected override Task < CallHierarchyOutgoingCallsResponse > CallHierarchyOutgoingCalls ( CallHierarchyOutgoingCallsParams request , CancellationToken token )
67+ protected override Task < CallHierarchyOutgoingCallsResponse > CallHierarchyOutgoingCalls (
68+ CallHierarchyOutgoingCallsParams request , CancellationToken token )
8169 {
8270 var calls = new List < CallHierarchyOutgoingCall >
8371 {
8472 new CallHierarchyOutgoingCall
8573 {
86- To = new CallHierarchyItem
74+ To = new Location
8775 {
88- Name = "callee" ,
89- Kind = SymbolKind . Function ,
9076 Uri = "file:///callee.txt" ,
91- Range = new LocationRange
92- {
93- Start = new Position { Line = 25 , Character = 0 } ,
94- End = new Position { Line = 30 , Character = 0 }
95- } ,
96- SelectionRange = new LocationRange
97- {
98- Start = new Position { Line = 25 , Character = 9 } ,
99- End = new Position { Line = 25 , Character = 15 }
100- }
77+ Range = new DocumentRange (
78+ new Position { Line = 25 , Character = 0 } ,
79+ new Position { Line = 30 , Character = 0 }
80+ )
10181 } ,
102- FromRanges = new List < LocationRange >
103- {
104- new LocationRange
105- {
106- Start = new Position { Line = 7 , Character = 4 } ,
107- End = new Position { Line = 7 , Character = 10 }
108- }
109- }
82+ FromRanges = new DocumentRange (
83+ new Position { Line = 7 , Character = 4 } ,
84+ new Position { Line = 7 , Character = 10 }
85+ )
11086 }
11187 } ;
11288
113- return Task . FromResult < CallHierarchyOutgoingCallsResponse ? > ( new CallHierarchyOutgoingCallsResponse ( calls ) ) ;
89+ return Task . FromResult ( new CallHierarchyOutgoingCallsResponse ( calls ) ) ;
11490 }
11591
116- public override void RegisterCapability ( ServerCapabilities serverCapabilities , ClientCapabilities clientCapabilities )
92+ public override void RegisterCapability ( ServerCapabilities serverCapabilities ,
93+ ClientCapabilities clientCapabilities )
11794 {
11895 serverCapabilities . CallHierarchyProvider = true ;
11996 }
@@ -126,22 +103,24 @@ public async Task Prepare_ShouldReturnCallHierarchyItems()
126103 var handler = new TestCallHierarchyHandler ( ) ;
127104 var request = new CallHierarchyPrepareParams
128105 {
129- TextDocument = new TextDocumentIdentifier { Uri = "file:///test.txt" } ,
106+ TextDocument = new TextDocumentIdentifier ( "file:///test.txt" ) ,
130107 Position = new Position { Line = 5 , Character = 15 }
131108 } ;
132109
133110 // Act
134- var result = await handler . GetType ( )
135- . GetMethod ( "CallHierarchyPrepare" , System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Instance ) !
136- . Invoke ( handler , new object [ ] { request , CancellationToken . None } ) as Task < CallHierarchyPrepareResponse ? > ;
111+ var method = handler . GetType ( )
112+ . GetMethod ( "CallHierarchyPrepare" ,
113+ System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Instance ) ! ;
114+
115+ var task = method . Invoke ( handler , [ request , CancellationToken . None ] ) ;
137116
138- var response = await result ! ;
117+ var response = await ( task as Task < CallHierarchyPrepareResponse ? > ) ! ;
139118
140119 // Assert
141120 response . Should ( ) . NotBeNull ( ) ;
142- response ! . CallHierarchyItems . Should ( ) . HaveCount ( 1 ) ;
143- response . CallHierarchyItems [ 0 ] . Name . Should ( ) . Be ( "testFunction" ) ;
144- response . CallHierarchyItems [ 0 ] . Kind . Should ( ) . Be ( SymbolKind . Function ) ;
121+ response ! . Result . Should ( ) . HaveCount ( 1 ) ;
122+ response . Result ! [ 0 ] . Name . Should ( ) . Be ( "testFunction" ) ;
123+ response . Result [ 0 ] . Kind . Should ( ) . Be ( SymbolKind . Function ) ;
145124 }
146125
147126 [ Fact ]
@@ -156,22 +135,25 @@ public async Task IncomingCalls_ShouldReturnIncomingCalls()
156135 Name = "testFunction" ,
157136 Kind = SymbolKind . Function ,
158137 Uri = "file:///test.txt" ,
159- Range = new LocationRange { Start = new Position ( ) , End = new Position ( ) } ,
160- SelectionRange = new LocationRange { Start = new Position ( ) , End = new Position ( ) }
138+ Range = new DocumentRange ( new Position ( ) , new Position ( ) ) ,
139+ SelectionRange = new DocumentRange ( new Position ( ) , new Position ( ) )
161140 }
162141 } ;
163142
164143 // Act
165- var result = await handler . GetType ( )
166- . GetMethod ( "CallHierarchyIncomingCalls" , System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Instance ) !
167- . Invoke ( handler , new object [ ] { request , CancellationToken . None } ) as Task < CallHierarchyIncomingCallsResponse > ;
144+ var method = handler . GetType ( )
145+ . GetMethod ( "CallHierarchyIncomingCalls" ,
146+ System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Instance ) ! ;
168147
169- var response = await result ! ;
148+ var task = method . Invoke ( handler , [ request , CancellationToken . None ] ) ;
149+
150+ var response = await ( task as Task < CallHierarchyIncomingCallsResponse > ) ! ;
170151
171152 // Assert
172153 response . Should ( ) . NotBeNull ( ) ;
173- response ! . IncomingCalls . Should ( ) . HaveCount ( 1 ) ;
174- response . IncomingCalls [ 0 ] . From . Name . Should ( ) . Be ( "caller" ) ;
154+ response ! . Result . Should ( ) . HaveCount ( 1 ) ;
155+ response . Result [ 0 ] . From . Uri . Should ( ) . Be ( "file:///caller.txt" ) ;
156+ response . Result [ 0 ] . From . Range . Start . Line . Should ( ) . Be ( 15 ) ;
175157 }
176158
177159 [ Fact ]
@@ -186,22 +168,25 @@ public async Task OutgoingCalls_ShouldReturnOutgoingCalls()
186168 Name = "testFunction" ,
187169 Kind = SymbolKind . Function ,
188170 Uri = "file:///test.txt" ,
189- Range = new LocationRange { Start = new Position ( ) , End = new Position ( ) } ,
190- SelectionRange = new LocationRange { Start = new Position ( ) , End = new Position ( ) }
171+ Range = new DocumentRange ( new Position ( ) , new Position ( ) ) ,
172+ SelectionRange = new DocumentRange ( new Position ( ) , new Position ( ) )
191173 }
192174 } ;
193175
194176 // Act
195- var result = await handler . GetType ( )
196- . GetMethod ( "CallHierarchyOutgoingCalls" , System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Instance ) !
197- . Invoke ( handler , new object [ ] { request , CancellationToken . None } ) as Task < CallHierarchyOutgoingCallsResponse > ;
177+ var method = handler . GetType ( )
178+ . GetMethod ( "CallHierarchyOutgoingCalls" ,
179+ System . Reflection . BindingFlags . NonPublic | System . Reflection . BindingFlags . Instance ) ! ;
180+
181+ var task = method . Invoke ( handler , [ request , CancellationToken . None ] ) ;
198182
199- var response = await result ! ;
183+ var response = await ( task as Task < CallHierarchyOutgoingCallsResponse > ) ! ;
200184
201185 // Assert
202186 response . Should ( ) . NotBeNull ( ) ;
203- response ! . OutgoingCalls . Should ( ) . HaveCount ( 1 ) ;
204- response . OutgoingCalls [ 0 ] . To . Name . Should ( ) . Be ( "callee" ) ;
187+ response ! . Result . Should ( ) . HaveCount ( 1 ) ;
188+ response . Result [ 0 ] . To . Uri . Should ( ) . Be ( "file:///callee.txt" ) ;
189+ response . Result [ 0 ] . To . Range . Start . Line . Should ( ) . Be ( 25 ) ;
205190 }
206191
207192 [ Fact ]
@@ -218,4 +203,4 @@ public void RegisterCapability_ShouldEnableCallHierarchyProvider()
218203 // Assert
219204 serverCapabilities . CallHierarchyProvider . Should ( ) . NotBeNull ( ) ;
220205 }
221- }
206+ }
0 commit comments