66using Microsoft . PowerShell . EditorServices . Language ;
77using Microsoft . PowerShell . EditorServices . Session ;
88using Microsoft . PowerShell . EditorServices . Test . Shared . Completion ;
9- using Microsoft . PowerShell . EditorServices . Test . Shared . Utility ;
109using System ;
1110using System . Management . Automation . Runspaces ;
1211using System . Threading ;
1312using System . Linq ;
1413using Xunit ;
1514using Microsoft . PowerShell . EditorServices . Test . Shared . ParameterHint ;
1615using Microsoft . PowerShell . EditorServices . Test . Shared . Definition ;
17- using Microsoft . PowerShell . EditorServices . Test . Shared . References ;
1816using Microsoft . PowerShell . EditorServices . Test . Shared . Occurrences ;
17+ using System . IO ;
1918
2019namespace Microsoft . PowerShell . EditorServices . Test . Language
2120{
2221 public class LanguageServiceTests : IDisposable
2322 {
24- private ResourceFileLoader fileLoader ;
23+ private Workspace workspace ;
2524 private Runspace languageServiceRunspace ;
2625 private LanguageService languageService ;
2726
2827 public LanguageServiceTests ( )
2928 {
30- // Load script files from the shared assembly
31- this . fileLoader =
32- new ResourceFileLoader (
33- typeof ( CompleteCommandInFile ) . Assembly ) ;
29+ this . workspace = new Workspace ( ) ;
3430
3531 this . languageServiceRunspace = RunspaceFactory . CreateRunspace ( ) ;
3632 this . languageServiceRunspace . ApartmentState = ApartmentState . STA ;
@@ -108,55 +104,31 @@ public void LanguageServiceFindsCommandForParamHintsWithSpaces()
108104 Assert . Equal ( 1 , paramSignatures . Signatures . Count ( ) ) ;
109105 }
110106
111- //[Fact]
112- //public void LanguageServiceFindsFunctionDefinition()
113- //{
114- // GetDefinitionResult definitionResult =
115- // this.GetDefinition(
116- // FindsFunctionDefinition.SourceDetails);
117-
118- // SymbolReference definition = definitionResult.FoundDefinition;
119- // Assert.Equal(1, definition.ScriptRegion.StartLineNumber);
120- // Assert.Equal(10, definition.ScriptRegion.StartColumnNumber);
121- // Assert.Equal("My-Function", definition.SymbolName);
122- //}
123-
124- //[Fact]
125- //public void LanguageServiceFindsVariableDefinition()
126- //{
127- // GetDefinitionResult definitionResult =
128- // this.GetDefinition(
129- // FindsVariableDefinition.SourceDetails);
130-
131- // SymbolReference definition = definitionResult.FoundDefinition;
132- // Assert.Equal(6, definition.ScriptRegion.StartLineNumber);
133- // Assert.Equal(1, definition.ScriptRegion.StartColumnNumber);
134- // Assert.Equal("$things", definition.SymbolName);
135- //}
136-
137- //[Fact]
138- //public void LanguageServiceFindsFunctionReferences()
139- //{
140- // FindReferencesResult referencesResult =
141- // this.GetReferences(
142- // FindsReferencesOnFunction.SourceDetails);
143-
144- // Assert.Equal(3, referencesResult.FoundReferences.Count());
145- // Assert.Equal(1, referencesResult.FoundReferences.First().ScriptRegion.StartLineNumber);
146- // Assert.Equal(10, referencesResult.FoundReferences.First().ScriptRegion.StartColumnNumber);
147- //}
148-
149- //[Fact]
150- //public void LanguageServiceFindsVariableReferences()
151- //{
152- // FindReferencesResult referencesResult =
153- // this.GetReferences(
154- // FindsReferencesOnVariable.SourceDetails);
155-
156- // Assert.Equal(3, referencesResult.FoundReferences.Count());
157- // Assert.Equal(10, referencesResult.FoundReferences.Last().ScriptRegion.StartLineNumber);
158- // Assert.Equal(13, referencesResult.FoundReferences.Last().ScriptRegion.StartColumnNumber);
159- //}
107+ [ Fact ]
108+ public void LanguageServiceFindsFunctionDefinition ( )
109+ {
110+ GetDefinitionResult definitionResult =
111+ this . GetDefinition (
112+ FindsFunctionDefinition . SourceDetails ) ;
113+
114+ SymbolReference definition = definitionResult . FoundDefinition ;
115+ Assert . Equal ( 1 , definition . ScriptRegion . StartLineNumber ) ;
116+ Assert . Equal ( 10 , definition . ScriptRegion . StartColumnNumber ) ;
117+ Assert . Equal ( "My-Function" , definition . SymbolName ) ;
118+ }
119+
120+ [ Fact ]
121+ public void LanguageServiceFindsVariableDefinition ( )
122+ {
123+ GetDefinitionResult definitionResult =
124+ this . GetDefinition (
125+ FindsVariableDefinition . SourceDetails ) ;
126+
127+ SymbolReference definition = definitionResult . FoundDefinition ;
128+ Assert . Equal ( 6 , definition . ScriptRegion . StartLineNumber ) ;
129+ Assert . Equal ( 1 , definition . ScriptRegion . StartColumnNumber ) ;
130+ Assert . Equal ( "$things" , definition . SymbolName ) ;
131+ }
160132
161133 [ Fact ]
162134 public void LanguageServiceFindsOccurrencesOnFunction ( )
@@ -182,10 +154,18 @@ public void LanguageServiceFindsOccurrencesOnParameter()
182154 Assert . Equal ( 3 , occurrencesResult . FoundOccurrences . Last ( ) . ScriptRegion . StartLineNumber ) ;
183155 }
184156
185- private ScriptFile GetScriptFile ( ScriptRegion scriptRegion ) {
186- return this . fileLoader . LoadFile ( scriptRegion . File ) ;
187- }
157+ private ScriptFile GetScriptFile ( ScriptRegion scriptRegion )
158+ {
159+ const string baseSharedScriptPath =
160+ @"..\..\..\PowerShellEditorServices.Test.Shared\" ;
188161
162+ string resolvedPath =
163+ Path . Combine (
164+ baseSharedScriptPath ,
165+ scriptRegion . File ) ;
166+
167+ return this . workspace . OpenFile ( resolvedPath ) ;
168+ }
189169
190170 private CompletionResults GetCompletionResults ( ScriptRegion scriptRegion )
191171 {
@@ -206,23 +186,41 @@ private ParameterSetSignatures GetParamSetSignatures(ScriptRegion scriptRegion)
206186 scriptRegion . StartColumnNumber ) ;
207187 }
208188
209- //private GetDefinitionResult GetDefinition(ScriptRegion scriptRegion)
210- //{
211- // return
212- // this.languageService.GetDefinitionOfSymbol(
213- // GetScriptFile(scriptRegion),
214- // scriptRegion.StartLineNumber,
215- // scriptRegion.StartColumnNumber);
216- //}
217-
218- //private FindReferencesResult GetReferences(ScriptRegion scriptRegion)
219- //{
220- // SymbolReference foundSymbol =
221- // this.languageService.FindSymbolAtLocation(
222- // GetScriptFile(scriptRegion),
223- // scriptRegion.StartLineNumber,
224- // scriptRegion.StartColumnNumber);
225- //}
189+ private GetDefinitionResult GetDefinition ( ScriptRegion scriptRegion )
190+ {
191+ ScriptFile scriptFile = GetScriptFile ( scriptRegion ) ;
192+
193+ SymbolReference symbolReference =
194+ this . languageService . FindSymbolAtLocation (
195+ scriptFile ,
196+ scriptRegion . StartLineNumber ,
197+ scriptRegion . StartColumnNumber ) ;
198+
199+ Assert . NotNull ( symbolReference ) ;
200+
201+ return
202+ this . languageService . GetDefinitionOfSymbol (
203+ symbolReference ,
204+ this . workspace . ExpandScriptReferences ( scriptFile ) ) ;
205+ }
206+
207+ private FindReferencesResult GetReferences ( ScriptRegion scriptRegion )
208+ {
209+ ScriptFile scriptFile = GetScriptFile ( scriptRegion ) ;
210+
211+ SymbolReference symbolReference =
212+ this . languageService . FindSymbolAtLocation (
213+ scriptFile ,
214+ scriptRegion . StartLineNumber ,
215+ scriptRegion . StartColumnNumber ) ;
216+
217+ Assert . NotNull ( symbolReference ) ;
218+
219+ return
220+ this . languageService . FindReferencesOfSymbol (
221+ symbolReference ,
222+ this . workspace . ExpandScriptReferences ( scriptFile ) ) ;
223+ }
226224
227225 private FindOccurrencesResult GetOccurrences ( ScriptRegion scriptRegion )
228226 {
0 commit comments