public void Should_find_usages_in_same_file() { const string editorText = @" public class BaseClass {} public class DerivedClassA : BaseClass {} public class DerivedClassB : BaseClass {} public class DerivedClassC : BaseClass {} "; var fileName = "test.cs"; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText, fileName: fileName); solution.Projects.Add(project); var handler = new GotoImplementationHandler (solution, new BufferParser(solution)); var request = new GotoImplementationRequest { Buffer = editorText , Line = 2 , Column = 14 // At word 'BaseClass' , FileName = fileName}; var gotoImplementationResponse = handler.FindDerivedMembersAsQuickFixes(request); var quickFixes = gotoImplementationResponse.QuickFixes.ToArray(); Assert.AreEqual(3, quickFixes.Length); quickFixes[0].Text.Trim().ShouldEqual("public class DerivedClassA : BaseClass {}"); quickFixes[1].Text.Trim().ShouldEqual("public class DerivedClassB : BaseClass {}"); quickFixes[2].Text.Trim().ShouldEqual("public class DerivedClassC : BaseClass {}"); }
private void AddReferencesToProjects(IEnumerable <ProjectReference> projectReferences) { var solution = FakeSolution.LoadOrCreate(Platform, AppModel, Language, FakeGenShellHelper.SolutionPath); var projectGuids = solution.GetProjectGuids(); var groupedReferences = projectReferences.GroupBy(n => n.Project, n => n); foreach (var project in groupedReferences) { var parentProject = FakeMsBuildProject.Load(project.Key); foreach (var referenceToAdd in project) { var referenceProject = FakeMsBuildProject.Load(referenceToAdd.ReferencedProject); var name = referenceProject.Name; var guid = projectGuids[name]; if (guid == "{}") { guid = "{" + Guid.NewGuid().ToString() + "}"; } parentProject.AddProjectReference(referenceToAdd.ReferencedProject, guid, name); } parentProject.Save(); } }
public void ShouldNotAddNonCSharpFile() { var project = new FakeProject(fileName: @"c:\test\code\fake.csproj"); var expectedXml = XDocument.Parse(@"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""><ItemGroup><Compile Include=""Hello.cs""/></ItemGroup></Project>"); project.XmlRepresentation = XDocument.Parse(@"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""><ItemGroup><Compile Include=""Hello.cs""/></ItemGroup></Project>"); project.AddFile("some content", @"c:\test\code\foo.txt"); var solution = new FakeSolution(@"c:\test\fake.sln"); solution.Projects.Add(project); var request = new AddToProjectRequest { FileName = @"c:\test\code\foo.txt" }; var handler = new AddToProjectHandler(solution, new FakeWindowsFileSystem()); handler.AddToProject(request); project.AsXml().ToString().ShouldEqual(expectedXml.ToString()); }
static QuickFixResponse FindDerivedMembersAsQuickFixes(FakeSolution solution, GotoImplementationRequest request) { var handler = new GotoImplementationHandler(solution, new BufferParser(solution), new ProjectFinder(solution)); var gotoImplementationResponse = handler.FindDerivedMembersAsQuickFixes(request); return(gotoImplementationResponse); }
public void ShouldRemoveItemGroupWhenRemovingLastFile() { XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003"; var project = new FakeProject(fileName: @"c:\test\code\fake.csproj"); project.AddFile("some content", @"c:\test\code\test.cs"); var xml = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <ItemGroup> <Compile Include=""Test.cs""/> </ItemGroup> </Project>"; project.XmlRepresentation = XDocument.Parse(xml); var solution = new FakeSolution(@"c:\test\fake.sln"); solution.Projects.Add(project); var request = new RemoveFromProjectRequest { FileName = @"c:\test\code\test.cs" }; var handler = new RemoveFromProjectHandler(solution); handler.RemoveFromProject(request); project.AsXml().Descendants(ns + "ItemGroup").Count().ShouldEqual(0); }
public void ShouldRemoveFileFromProjectXml() { var project = new FakeProject(fileName: @"c:\test\code\fake.csproj"); project.AddFile("some content", @"c:\test\code\test.cs"); var xml = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <ItemGroup> <Compile Include=""Hello.cs""/> <Compile Include=""Test.cs""/> </ItemGroup> </Project>"; project.XmlRepresentation = XDocument.Parse(xml); var expectedXml = XDocument.Parse(@" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <ItemGroup> <Compile Include=""Hello.cs""/> </ItemGroup> </Project>"); var solution = new FakeSolution(@"c:\test\fake.sln"); solution.Projects.Add(project); var request = new RemoveFromProjectRequest { FileName = @"c:\test\code\test.cs" }; var handler = new RemoveFromProjectHandler(solution); handler.RemoveFromProject(request); project.AsXml().ToString().ShouldEqual(expectedXml.ToString()); }
public void Should_find_usages_of_class() { const string editorText = @"public class myclass { public void method() { } public void method_calling_method() { method(); } } "; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText); solution.Projects.Add(project); var handler = new FindUsagesHandler (new OmniSharp.Parser.BufferParser (solution), solution, new ProjectFinder(solution)); var usages = handler.FindUsages (new FindUsagesRequest { FileName = "myfile", Line = 3, Column = 21, Buffer = editorText }).QuickFixes.ToArray(); usages.Length.ShouldEqual(2); usages[0].Text.Trim().ShouldEqual("public void method() { }"); usages[1].Text.Trim().ShouldEqual("method();"); }
public void ShouldRemoveItemGroupWhenRemovingLastFile() { XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003"; var project = new FakeProject(fileName: @"c:\test\code\fake.csproj"); project.AddFile("some content", @"c:\test\code\test.cs"); var xml = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <ItemGroup> <Compile Include=""Test.cs""/> </ItemGroup> </Project>"; project.XmlRepresentation = XDocument.Parse(xml); var solution = new FakeSolution(@"c:\test\fake.sln"); solution.Projects.Add(project); var request = new RemoveFromProjectRequest { FileName = @"c:\test\code\test.cs" }; var handler = new RemoveFromProjectHandler(solution); handler.RemoveFromProject(request); project.AsXml().Descendants(ns + "ItemGroup").Count().ShouldEqual(0); }
public void Should_find_usages_in_same_file() { const string editorText = @" public class BaseClass {} public class DerivedClassA : BaseClass {} public class DerivedClassB : BaseClass {} public class DerivedClassC : BaseClass {} "; var fileName = "test.cs"; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText, fileName); solution.Projects.Add(project); var handler = new GotoImplementationHandler (solution, new BufferParser(solution), new ProjectFinder(solution)); var request = new GotoImplementationRequest { Buffer = editorText , Line = 2 , Column = 14 // At word 'BaseClass' , FileName = fileName }; var gotoImplementationResponse = handler.FindDerivedMembersAsQuickFixes(request); var quickFixes = gotoImplementationResponse.QuickFixes.ToArray(); Assert.AreEqual(3, quickFixes.Length); quickFixes[0].Text.Trim().ShouldEqual("public class DerivedClassA : BaseClass {}"); quickFixes[1].Text.Trim().ShouldEqual("public class DerivedClassB : BaseClass {}"); quickFixes[2].Text.Trim().ShouldEqual("public class DerivedClassC : BaseClass {}"); }
public void Should_find_usages_of_class() { const string editorText = @"public class myclass { public void method() { } public void method_calling_method() { method(); } } "; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText); solution.Projects.Add(project); var handler = new FindUsagesHandler(new OmniSharp.Parser.BufferParser(solution), solution, new ProjectFinder(solution)); var usages = handler.FindUsages(new FindUsagesRequest { FileName = "myfile", Line = 3, Column = 21, Buffer = editorText }).QuickFixes.ToArray(); usages.Length.ShouldEqual(2); usages[0].Text.Trim().ShouldEqual("public void method() { }"); usages[1].Text.Trim().ShouldEqual("method();"); }
public void ShouldRemoveFileFromProject() { var project = new FakeProject(fileName: @"c:\test\code\fake.csproj"); project.AddFile("some content", @"c:\test\code\test.cs"); var xml = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <ItemGroup> <Compile Include=""Test.cs""/> </ItemGroup> </Project>"; project.XmlRepresentation = XDocument.Parse(xml); var solution = new FakeSolution(@"c:\test\fake.sln"); solution.Projects.Add(project); var request = new RemoveFromProjectRequest { FileName = @"c:\test\code\test.cs" }; var handler = new RemoveFromProjectHandler(solution); handler.RemoveFromProject(request); project.Files.ShouldBeEmpty(); }
public void Should_find_usages_of_class() { const string editorText = @"public class myclass { public void method() { } public void method_calling_method() { method(); } } "; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText); solution.Projects.Add(project); var bootstrapper = new ConfigurableBootstrapper(c => c.Dependency<ISolution>(solution)); var browser = new Browser(bootstrapper); var result = browser.Post("/findusages", with => { with.HttpRequest(); with.FormValue("FileName", "myfile"); with.FormValue("Line", "3"); with.FormValue("Column", "21"); with.FormValue("Buffer", editorText); }); var usages = result.Body.DeserializeJson<FindUsagesResponse>().Usages.ToArray(); usages.Count().ShouldEqual(2); usages[0].Text.Trim().ShouldEqual("public void method() { }"); usages[1].Text.Trim().ShouldEqual("method();"); }
public void ShouldRemoveFileFromProjectXml() { var xml = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <ItemGroup> <Compile Include=""Hello.cs""/> <Compile Include=""Test.cs""/> </ItemGroup> </Project>"; var project = GetProject(xml, @"c:\test\code\fake1.csproj"); var expectedXml = XDocument.Parse(@" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <ItemGroup> <Compile Include=""Hello.cs""/> </ItemGroup> </Project>"); var solution = new FakeSolution(@"c:\test\fake.sln"); solution.Projects.Add(project); var request = new RemoveFromProjectRequest { FileName = @"c:\test\code\test.cs" }; var handler = new RemoveFromProjectHandler(solution); handler.RemoveFromProject(request); project.AsXml().ToString().ShouldEqual(expectedXml.ToString()); }
public BrowseObjectExtenderTest() { this.dte = new FakeDte(); this.solution = new FakeSolution(this.dte); this.project = new FakeProject(this.solution); this.projectItem = new FakeProjectItem(this.project); this.extenderSite = new StubExtenderSite(); }
void CreateTestProject() { var solution = new FakeSolution(@"c:\projects\Test\MyProject\MySolution.sln"); solution.BaseDirectory = @"c:\projects\Test\MyProject"; project = new FakeProject(); project.ParentSolution = solution; }
public CustomToolParameterTest() { this.dte = new FakeDte(); this.solution = new FakeSolution(this.dte); this.project = new FakeProject(this.solution); this.projectItem = new FakeProjectItem(this.project); this.parent = new CustomToolParameters(this.dte, this.project, this.projectItem.Id); }
void CreateTestProject() { testProject = ProjectHelper.CreateTestProject(); var solution = new FakeSolution { BaseDirectory = @"c:\projects\MyProject\".ToNativePath() }; testProject.ParentSolution = solution; }
public CustomToolParametersTest() { this.dte = new FakeDte(); this.dte.AddService(typeof(TemplateLocator), new FakeTemplateLocator(), false); this.dte.AddService(typeof(STextTemplating), new FakeTextTemplatingService(), false); this.solution = new FakeSolution(this.dte); this.project = new FakeProject(this.solution); this.projectItem = new FakeProjectItem(this.project); }
void CreateProject(string name, string fileName = @"d:\projects\MyProject\MyProject.csproj") { packageManagementEvents = new PackageManagementEvents(); logger = new PackageManagementLogger(packageManagementEvents); solution = new FakeSolution(); project = new FakeDotNetProject(fileName.ToNativePath()); project.ParentSolution = solution; project.Name = name; }
void CreateProject() { solutionManager = new FakeSolutionManager(); fakeSolution = new FakeSolution(); CreateNuGetProject(); fakeDotNetProject = new FakeDotNetProject(dotNetProject.FileName); fakeDotNetProject.ParentSolution = fakeSolution; fakeDotNetProject.DotNetProject = dotNetProject; fakeSolution.Projects.Add(fakeDotNetProject); }
FakeDotNetProject LoadSolutionWithOneProject() { solution = new FakeSolution(); projectService.OpenSolution = solution; var project = new FakeDotNetProject(); projectService.OpenProjects.Add(project); solution.Projects.Add(project); projectService.RaiseSolutionLoadedEvent(); return(project); }
public void FileName_SolutionHasFileName_ReturnsSolutionFileName() { CreateSolution(); string expectedFileName = @"d:\projects\myproject\Project.sln".ToNativePath(); var solution = new FakeSolution(expectedFileName); fakeProjectService.OpenSolution = solution; string fileName = this.solution.FileName; Assert.AreEqual(expectedFileName, fileName); }
public void GetRepository_OpenSolution_ReturnsRepositoryForSolution() { CreateSolution(); var fakeSolution = new FakeSolution(@"d:\projects\MyProject\MySolution.sln"); fakeProjectService.OpenSolution = fakeSolution; ISolutionPackageRepository repository = solution.GetRepository(); Assert.IsNotNull(repository); Assert.AreEqual(fakeSolutionPackageRepositoryFactory.SolutionPassedToCreateSolutionPackageRepository, fakeSolution); Assert.AreEqual(fakeSolutionPackageRepositoryFactory.FakeSolutionPackageRepository, repository); }
public void ShouldThrowProjectNotFoundExceptionWhenProjectNotFound() { var project = new FakeProject(fileName: @"/test/code/fake.csproj"); var solution = new FakeSolution(@"/test/fake.sln"); solution.Projects.Add(project); var request = new RemoveFromProjectRequest { FileName = @"/test/folder/Test.cs" }; var handler = new RemoveFromProjectHandler(solution); handler.RemoveFromProject(request); }
public OutputFileManagerTest() { this.dte = new FakeDte(); this.solution = new FakeSolution(this.dte); this.project = new FakeProject(this.solution); this.projectItem = new FakeProjectItem(this.project); this.textTemplating = new FakeTextTemplating(); this.queryEditQuerySave = new StubIVsQueryEditQuerySave(); this.runningDocumentTable = new StubIVsRunningDocumentTable(); this.dte.AddService(typeof(STextTemplating), this.textTemplating, false); this.dte.AddService(typeof(SVsQueryEditQuerySave), this.queryEditQuerySave, false); this.dte.AddService(typeof(SVsRunningDocumentTable), this.runningDocumentTable, false); }
public Guid GetProjectGuidByName(string projectName) { var projectFileName = FindProject(GenContext.Current.DestinationPath); var msbuildProj = FakeMsBuildProject.Load(projectFileName); var guid = msbuildProj.Guid; if (string.IsNullOrEmpty(guid)) { var solution = FakeSolution.LoadOrCreate(Platform, AppModel, Language, FakeGenShellHelper.SolutionPath); guid = solution.GetProjectGuids().First(p => p.Key == projectName).Value; } Guid.TryParse(guid, out Guid parsedGuid); return(parsedGuid); }
public void ShouldThrowProjectNotFoundExceptionWhenProjectNotFound() { var project = GetProject("<xml/>"); var solution = new FakeSolution(@"/test/fake.sln"); solution.Projects.Add(project); var request = new AddToProjectRequest { FileName = @"/test/folder/Test.cs" }; var handler = new AddToProjectHandler(solution, new FakeUnixFileSystem()); handler.AddToProject(request); }
FakeDotNetProject LoadSolutionWithOneProject() { solutionCount++; string fileName = String.Format(@"d:\projects\MySolution\MySolution{0}.sln", solutionCount); solution = new FakeSolution(fileName); projectService.OpenSolution = solution; var project = new FakeDotNetProject(); projectService.OpenProjects.Add(project); solution.Projects.Add(project); projectService.RaiseSolutionLoadedEvent(solution); return(project); }
public void AddContextItemsToSolution(ProjectInfo projectInfo) { var filesByProject = ProjectHelper.ResolveProjectFiles(projectInfo.ProjectItems); var filesForExistingProjects = filesByProject.Where(k => !projectInfo.Projects.Any(p => p == k.Key)); var nugetsForExistingProjects = projectInfo.NugetReferences.Where(n => !projectInfo.Projects.Any(p => p == n.Project)).GroupBy(n => n.Project, n => n); var sdksForExistingProjects = projectInfo.SdkReferences.Where(n => !projectInfo.Projects.Any(p => p == n.Project)).GroupBy(n => n.Project, n => n); foreach (var files in filesForExistingProjects) { if (!IsCpsProject(files.Key)) { AddItems(files.Key, files.Value); } } foreach (var project in nugetsForExistingProjects) { AddNugetsForProject(project.Key, project); } foreach (var sdk in sdksForExistingProjects) { AddSdksForProject(sdk.Key, sdk); } foreach (var project in projectInfo.Projects) { var msbuildProj = FakeMsBuildProject.Load(project); var solutionFile = FakeSolution.LoadOrCreate(Platform, AppModel, Language, FakeGenShellHelper.SolutionPath); var projectRelativeToSolutionPath = project.Replace(Path.GetDirectoryName(FakeGenShellHelper.SolutionPath) + Path.DirectorySeparatorChar, string.Empty); var projGuid = !string.IsNullOrEmpty(msbuildProj.Guid) ? msbuildProj.Guid : Guid.NewGuid().ToString(); solutionFile.AddProjectToSolution(Platform, AppModel, Language, msbuildProj.Name, projGuid, projectRelativeToSolutionPath, IsCpsProject(project), HasPlatforms(project)); if (!IsCpsProject(project) && filesByProject.ContainsKey(project)) { AddItems(project, filesByProject[project]); } AddNugetsForProject(project, projectInfo.NugetReferences.Where(n => n.Project == project)); AddSdksForProject(project, projectInfo.SdkReferences.Where(n => n.Project == project)); } AddReferencesToProjects(projectInfo.ProjectReferences); }
public void ShouldThrowProjectNotFoundExceptionForOrphanProject() { var solution = new FakeSolution(@"/test/fake.sln"); var project = new OrphanProject(new FileSystem(), new Logger(Verbosity.Quiet)); project.Files.Add(new CSharpFile(project, "/test/folder/Test.cs", "Some content...")); solution.Projects.Add(project); var request = new AddToProjectRequest { FileName = @"/test/folder/Test.cs" }; var handler = new AddToProjectHandler(solution, new FakeUnixFileSystem()); handler.AddToProject(request); }
public void ShouldThrowProjectNotFoundExceptionWhenProjectNotFound() { var project = new FakeProject(fileName: @"/test/code/fake.csproj"); var solution = new FakeSolution(@"/test/fake.sln"); solution.Projects.Add(project); var request = new RemoveFromProjectRequest { FileName = @"/test/folder/Test.cs" }; var handler = new RemoveFromProjectHandler(solution); handler.RemoveFromProject(request); }
public void ProjectModified_TwoSolutionsLoadedFirstSolutionUnloadedProjectTargetFrameworkChangedInFirstAndSecondSolution_EventFiresForProjectInOpenSolutionOnly() { CreateProjectTargetFrameworkMonitor(); FakeDotNetProject firstProject = LoadSolutionWithOneProject(); FakeSolution firstSolution = new FakeSolution(solution.FileName); projectService.OpenProjects.Clear(); FakeDotNetProject secondProject = LoadSolutionWithOneProject(); CaptureProjectTargetFrameworkChangedEvents(); UnloadSolution(firstSolution); firstProject.RaiseModifiedEvent(firstProject, targetFrameworkPropertyName); secondProject.RaiseModifiedEvent(secondProject, targetFrameworkPropertyName); Assert.AreEqual(1, eventArgs.Count); Assert.AreEqual(secondProject, eventArgs [0].Project); }
void CreateUpdatedPackagesInWorkspace() { updatedPackagesInWorkspace = new TestableUpdatedNuGetPackagesInWorkspace(); taskRunner = updatedPackagesInWorkspace.TaskRunner; packageManagementEvents = updatedPackagesInWorkspace.PackageManagementEvents; solution = new FakeSolution(); var metadataResourceProvider = new FakePackageMetadataResourceProvider(); packageMetadataResource = metadataResourceProvider.PackageMetadataResource; var source = new PackageSource("http://test.com"); var providers = new INuGetResourceProvider[] { metadataResourceProvider }; var sourceRepository = new SourceRepository(source, providers); taskRunner.SolutionManager.SourceRepositoryProvider.Repositories.Add(sourceRepository); }
public void ShouldNotAddFileToProjectWhenAlreadyExists() { var project = GetProject(@"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""><ItemGroup><Compile Include=""Hello.cs""/><Compile Include=""Test.cs""/></ItemGroup></Project>"); var expectedXml = project.AsXml(); var solution = new FakeSolution(@"c:\test\fake.sln"); solution.Projects.Add(project); var request = new AddToProjectRequest { FileName = @"c:\test\code\test.cs" }; var handler = new AddToProjectHandler(solution, new FakeWindowsFileSystem()); handler.AddToProject(request); project.AsXml().ToString().ShouldEqual(expectedXml.ToString()); }
private static Error[] GetErrors(string editorText) { var fileName = "test.cs"; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText, fileName); solution.Projects.Add(project); var handler = new SemanticErrorsHandler(solution); var request = new Request { Buffer = editorText, FileName = fileName, }; var semanticErrorsResponse = handler.FindSemanticErrors(request); return(semanticErrorsResponse.Errors.ToArray()); }
public void Should_complete_string() { string editorText = @" public class myclass { public void method() { string s; s.$; } } "; int cursorOffset = editorText.IndexOf("$", StringComparison.Ordinal); TextLocation cursorPosition = TestHelpers.GetLineAndColumnFromIndex(editorText, cursorOffset); string partialWord = GetPartialWord(editorText); editorText = editorText.Replace("$", ""); var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText); solution.Projects.Add(project); var bootstrapper = new ConfigurableBootstrapper(c => c.Dependency <ISolution>(solution)); var browser = new Browser(bootstrapper); var result = browser.Post("/autocomplete", with => { with.HttpRequest(); with.FormValue("FileName", "myfile"); with.FormValue("WordToComplete", partialWord); with.FormValue("Buffer", editorText); with.FormValue("Line", cursorPosition.Line.ToString()); with.FormValue("Column", cursorPosition.Column.ToString()); }); var res = result.Body.DeserializeJson <AutoCompleteResponse[]>().Select(c => c.DisplayText); res.ShouldContain("Trim()"); }
public void ShouldAlwaysUseWindowsFileSeparatorWhenAddingToProject() { var project = new FakeProject(fileName: @"/test/code/fake.csproj"); project.XmlRepresentation = XDocument.Parse(@"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""><ItemGroup><Compile Include=""Hello.cs""/></ItemGroup></Project>"); var expectedXml = XDocument.Parse(@"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""><ItemGroup><Compile Include=""Hello.cs""/><Compile Include=""folder\Test.cs""/></ItemGroup></Project>"); project.AddFile("some content", @"/test/code/folder/Test.cs"); var solution = new FakeSolution(@"/test/fake.sln"); solution.Projects.Add(project); var request = new AddToProjectRequest { FileName = @"/test/code/folder/Test.cs" }; var handler = new AddToProjectHandler(solution); handler.AddToProject(request); project.AsXml().ToString().ShouldEqual(expectedXml.ToString()); }
public static GetContextResponse GetContextInformation(this string editorText) { var cursorPosition = TestHelpers.GetLineAndColumnFromDollar(editorText); editorText = editorText.Replace("$", ""); var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText); solution.Projects.Add(project); var handler = new GetTestContextHandler(solution, new BufferParser(solution)); var request = new TestCommandRequest { Buffer = editorText, FileName = "myfile", Line = cursorPosition.Line, Column = cursorPosition.Column, }; return handler.GetContextResponse(request); }
public void ShouldAddNewFileToProject() { var project = GetProject (@"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""><ItemGroup><Compile Include=""Hello.cs""/></ItemGroup></Project>"); project.Files.Add (new CSharpFile (project, @"c:\test\code\files\Test.cs", "some c# code")); var solution = new FakeSolution (@"c:\test\fake.sln"); solution.Projects.Add (project); var request = new AddToProjectRequest { FileName = @"c:\test\code\files\Test.cs" }; var handler = new AddToProjectHandler (solution); handler.AddToProject (request); var expectedXml = XDocument.Parse ( @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""><ItemGroup><Compile Include=""Hello.cs""/><Compile Include=""files\Test.cs""/></ItemGroup></Project>"); project.AsXml ().ToString ().ShouldEqual (expectedXml.ToString ()); }
public static string LookupType(this string editorText) { int cursorOffset = editorText.IndexOf("$", StringComparison.Ordinal); var cursorPosition = TestHelpers.GetLineAndColumnFromIndex(editorText, cursorOffset); editorText = editorText.Replace("$", ""); var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText); solution.Projects.Add(project); var handler = new TypeLookupHandler(new BufferParser(solution)); var request = new TypeLookupRequest() { Buffer = editorText, FileName = "myfile", Line = cursorPosition.Line, Column = cursorPosition.Column, }; return handler.GetTypeLookupResponse(request).Type; }
public void Should_complete_string() { string editorText = @" public class myclass { public void method() { string s; s.$; } } "; int cursorOffset = editorText.IndexOf("$", StringComparison.Ordinal); Tuple<int, int> cursorPosition = GetLineAndColumnFromIndex(editorText, cursorOffset); string partialWord = GetPartialWord(editorText); editorText = editorText.Replace("$", ""); var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText); solution.Projects.Add("dummyproject", project); var bootstrapper = new ConfigurableBootstrapper(c => c.Dependency<ISolution>(solution)); var browser = new Browser(bootstrapper); var result = browser.Post("/autocomplete", with => { with.HttpRequest(); with.FormValue("FileName", "myfile"); with.FormValue("WordToComplete", partialWord); with.FormValue("Buffer", editorText); with.FormValue("Line", cursorPosition.Item1.ToString()); with.FormValue("Column", cursorPosition.Item2.ToString()); }); var res = result.Body.DeserializeJson<AutoCompleteResponse[]>().Select(c => c.DisplayText); res.ShouldContain("Trim()"); }
public void ShouldNotAddFileToProjectWhenAlreadyExists() { var project = GetProject (@"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""><ItemGroup><Compile Include=""Hello.cs""/><Compile Include=""Test.cs""/><Compile Include=""c:\test2\Absolute.cs""/><Compile Include=""..\..\test2\Foreign.cs""/></ItemGroup></Project>"); var expectedXml = project.AsXml (); var solution = new FakeSolution (@"c:\test\fake.sln"); solution.Projects.Add (project); // test relative internal var request = new AddToProjectRequest { FileName = @"c:\test\code\test.cs" }; var handler = new AddToProjectHandler (solution); handler.AddToProject (request); project.AsXml ().ToString ().ShouldEqual (expectedXml.ToString ()); // test absolute request = new AddToProjectRequest { FileName = @"c:\test2\Absolute.cs" }; handler = new AddToProjectHandler (solution); handler.AddToProject (request); project.AsXml ().ToString ().ShouldEqual (expectedXml.ToString ()); // test relative foreign tree request = new AddToProjectRequest { FileName = @"c:\test2\Foreign.cs" }; handler = new AddToProjectHandler (solution); handler.AddToProject (request); project.AsXml ().ToString ().ShouldEqual (expectedXml.ToString ()); }
public void Should_lookup_Test() { string editorText = @" public class Test { public void Main() { Test test; te$st = new Test(); } } "; int cursorOffset = editorText.IndexOf("$", StringComparison.Ordinal); Tuple<int, int> cursorPosition = GetLineAndColumnFromIndex(editorText, cursorOffset); editorText = editorText.Replace("$", ""); var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText); solution.Projects.Add("dummyproject", project); var bootstrapper = new ConfigurableBootstrapper(c => c.Dependency<ISolution>(solution)); var browser = new Browser(bootstrapper); var result = browser.Post("/typelookup", with => { with.HttpRequest(); with.FormValue("FileName", "myfile"); with.FormValue("Buffer", editorText); with.FormValue("Line", cursorPosition.Item1.ToString()); with.FormValue("Column", cursorPosition.Item2.ToString()); }); var res = result.Body.DeserializeJson<TypeLookupResponse>(); res.Type.ShouldEqual("Test test"); }
public void ShouldThrowProjectNotFoundExceptionForOrphanProject() { var solution = new FakeSolution(@"/test/fake.sln"); var project = new OrphanProject(); project.Files.Add(new CSharpFile(project, "/test/folder/Test.cs", "Some content...")); solution.Projects.Add(project); var request = new AddToProjectRequest { FileName = @"/test/folder/Test.cs" }; var handler = new AddToProjectHandler(solution); handler.AddToProject(request); }
public void ShouldRemoveFileFromProject() { var xml = @" <Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003""> <ItemGroup> <Compile Include=""Test.cs""/> </ItemGroup> </Project>"; var project = GetProject(xml); var solution = new FakeSolution(@"c:\test\fake.sln"); solution.Projects.Add(project); var request = new RemoveFromProjectRequest { FileName = @"c:\test\code\test.cs" }; var handler = new RemoveFromProjectHandler(solution); handler.RemoveFromProject(request); project.Files.ShouldBeEmpty(); }
public void ShouldThrowProjectNotFoundExceptionWhenProjectNotFound() { var project = GetProject ("<xml/>"); var solution = new FakeSolution (@"/test/fake.sln"); solution.Projects.Add (project); var request = new AddToProjectRequest { FileName = @"/test/folder/Test.cs" }; var handler = new AddToProjectHandler (solution); handler.AddToProject (request); }
private static Error[] GetErrors(string editorText) { var fileName = "test.cs"; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText, fileName); solution.Projects.Add(project); var handler = new SemanticErrorsHandler(solution); var request = new Request { Buffer = editorText, FileName = fileName, }; var semanticErrorsResponse = handler.FindSemanticErrors(request); return semanticErrorsResponse.Errors.ToArray(); }
static QuickFixResponse FindDerivedMembersAsQuickFixes(FakeSolution solution, GotoImplementationRequest request) { var handler = new GotoImplementationHandler(solution, new BufferParser(solution), new ProjectFinder(solution)); var gotoImplementationResponse = handler.FindDerivedMembersAsQuickFixes(request); return gotoImplementationResponse; }
public FakeSolutionBuilder() { _solution = new FakeSolution(); _project = new FakeProject("Project" + projectCount++); _projects.Add(_project); }
public CompletionsSpecBase() { _solution = new FakeSolution(); }