Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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();
        }