public void TestProjectionCompletion ()
{
var editor = TextEditorFactory.CreateNewEditor ();
var options = new CustomEditorOptions (editor.Options);
options.ColorScheme = "Tango";
editor.Options = options;
editor.Text = "12345678901234567890";
var projectedDocument = TextEditorFactory.CreateNewDocument (
new StringTextSource ("__12__34__56__78__90"),
"a"
);
var segments = new List<ProjectedSegment> ();
for (int i = 0; i < 5; i++) {
segments.Add (new ProjectedSegment (i * 2, 2 + i * 4, 2));
}
var projection = new Projection.Projection (projectedDocument, segments);
var tww = new TestWorkbenchWindow ();
var content = new TestViewContent ();
tww.ViewContent = content;
var originalContext = new Document (tww);
var projectedEditor = projection.CreateProjectedEditor (originalContext);
TestCompletionExtension orignalExtension;
editor.SetExtensionChain (originalContext, new [] { orignalExtension = new TestCompletionExtension (editor) });
TestCompletionExtension projectedExtension;
projectedEditor.SetExtensionChain (originalContext, new [] { projectedExtension = new TestCompletionExtension (editor) });
orignalExtension.CompletionWidget = new EmptyCompletionWidget (editor);
projectedExtension.CompletionWidget = new EmptyCompletionWidget (projectedEditor);
editor.SetOrUpdateProjections (originalContext, new [] { projection }, TypeSystem.DisabledProjectionFeatures.None);
editor.CaretOffset = 1;
var service = new CommandManager ();
service.LoadCommands ("/MonoDevelop/Ide/Commands");
service.DispatchCommand (TextEditorCommands.ShowCompletionWindow, null, editor.CommandRouter);
Assert.IsFalse (orignalExtension.CompletionRun);
Assert.IsTrue (projectedExtension.CompletionRun);
editor.CaretOffset = 15;
service.DispatchCommand (TextEditorCommands.ShowCompletionWindow, null, editor.CommandRouter);
Assert.IsTrue (orignalExtension.CompletionRun);
}