private async Task CheckAutoBracket(string mid, string expected) { var prefix = @" class FooBar { public static void Main (string[] args) { Console.WriteLine (" ; var suffix = ");\n\t}\n}\n"; var text = prefix + mid + "@" + suffix; int endPos = text.IndexOf('@'); if (endPos >= 0) { text = text.Substring(0, endPos) + text.Substring(endPos + 1); } using (var testCase = await SetupTestCase(text, cursorPosition: Math.Max(0, endPos))) { var doc = testCase.Document; await doc.UpdateParseDocument(); var ctx = new CodeCompletionContext(); var handler = new CSharpAutoInsertBracketHandler(); char ch = mid [mid.Length - 1]; handler.Handle(doc.Editor, doc, KeyDescriptor.FromGtk((Gdk.Key)ch, ch, Gdk.ModifierType.None)); var newText = doc.Editor.GetTextAt(prefix.Length, doc.Editor.Length - prefix.Length - suffix.Length); Assert.AreEqual(expected, newText); } }
private static async Task CheckAutoBracket(string mid, string expected) { var prefix = @" class FooBar { public static void Main (string[] args) { Console.WriteLine (" ; var suffix = ");\n\t}\n}\n"; var text = prefix + mid + "@" + suffix; int endPos = text.IndexOf('@'); if (endPos >= 0) { text = text.Substring(0, endPos) + text.Substring(endPos + 1); } var project = Ide.Services.ProjectService.CreateDotNetProject("C#"); project.Name = "test"; project.References.Add(MonoDevelop.Projects.ProjectReference.CreateAssemblyReference("mscorlib")); project.References.Add(MonoDevelop.Projects.ProjectReference.CreateAssemblyReference("System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")); project.References.Add(MonoDevelop.Projects.ProjectReference.CreateAssemblyReference("System.Core")); project.FileName = "test.csproj"; project.Files.Add(new ProjectFile("/a.cs", BuildAction.Compile)); var solution = new MonoDevelop.Projects.Solution(); solution.AddConfiguration("", true); solution.DefaultSolutionFolder.AddItem(project); using (var monitor = new ProgressMonitor()) await TypeSystemService.Load(solution, monitor); var tww = new TestWorkbenchWindow(); var content = new TestViewContent(); tww.ViewContent = content; content.ContentName = "/a.cs"; content.Data.MimeType = "text/x-csharp"; content.Project = project; content.Text = text; content.CursorPosition = Math.Max(0, endPos); var doc = new MonoDevelop.Ide.Gui.Document(tww); doc.SetProject(project); var compExt = new CSharpCompletionTextEditorExtension(); compExt.Initialize(doc.Editor, doc); content.Contents.Add(compExt); await doc.UpdateParseDocument(); var ctx = new CodeCompletionContext(); var handler = new CSharpAutoInsertBracketHandler(); char ch = mid [mid.Length - 1]; handler.Handle(doc.Editor, doc, Ide.Editor.Extension.KeyDescriptor.FromGtk((Gdk.Key)ch, ch, Gdk.ModifierType.None)); var newText = doc.Editor.GetTextAt(prefix.Length, doc.Editor.Length - prefix.Length - suffix.Length); Assert.AreEqual(expected, newText); project.Dispose(); }