void HandleDocumentParsed(object sender, EventArgs e)
        {
            if (!EnableUnitTestEditorIntegration)
            {
                return;
            }
            src.Cancel();
            src = new CancellationTokenSource();
            var token = src.Token;

            ThreadPool.QueueUserWorkItem(delegate {
                if (token.IsCancellationRequested)
                {
                    return;
                }
                var foundTests = GatherUnitTests();
                if (foundTests == null)
                {
                    return;
                }
                Application.Invoke(delegate {
                    var editor = document.Editor;
                    if (editor == null)
                    {
                        return;
                    }
                    var textEditor = editor.Parent;
                    if (textEditor == null)
                    {
                        return;
                    }
                    var actionMargin = textEditor.ActionMargin;
                    if (actionMargin == null)
                    {
                        return;
                    }
                    if (actionMargin.IsVisible ^ (foundTests.Count > 0))
                    {
                        textEditor.QueueDraw();
                    }
                    actionMargin.IsVisible |= foundTests.Count > 0;
                    foreach (var oldMarker in currentMarker)
                    {
                        editor.Document.RemoveMarker(oldMarker);
                    }

                    foreach (var foundTest in foundTests)
                    {
                        if (token.IsCancellationRequested)
                        {
                            return;
                        }
                        var unitTestMarker = new UnitTestMarker(foundTest, document);
                        currentMarker.Add(unitTestMarker);
                        editor.Document.AddMarker(foundTest.LineNumber, unitTestMarker);
                    }
                });
            });
        }
Ejemplo n.º 2
0
        void HandleDocumentParsed(object sender, EventArgs e)
        {
            if (!AnalysisOptions.EnableUnitTestEditorIntegration)
            {
                return;
            }
            src.Cancel();
            src = new CancellationTokenSource();
            var token = src.Token;

            ThreadPool.QueueUserWorkItem(delegate {
                var resolver = document.GetSharedResolver();
                if (resolver == null || resolver.Result == null)
                {
                    return;
                }
                var visitor = new NUnitVisitor(resolver.Result);
                try {
                    visitor.VisitSyntaxTree(document.ParsedDocument.GetAst <SyntaxTree> ());
                } catch (Exception ex) {
                    LoggingService.LogError("Exception while analyzing ast for unit tests.", ex);
                    return;
                }
                if (token.IsCancellationRequested)
                {
                    return;
                }
                Application.Invoke(delegate {
                    var editor = document.Editor;
                    if (editor == null)
                    {
                        return;
                    }
                    var textEditor = editor.Parent;
                    if (textEditor == null)
                    {
                        return;
                    }
                    var actionMargin = textEditor.ActionMargin;
                    if (actionMargin == null)
                    {
                        return;
                    }
                    if (actionMargin.IsVisible ^ (visitor.FoundTests.Count > 0))
                    {
                        textEditor.QueueDraw();
                    }
                    actionMargin.IsVisible = visitor.FoundTests.Count > 0;
                    foreach (var oldMarker in currentMarker)
                    {
                        editor.Document.RemoveMarker(oldMarker);
                    }

                    foreach (var foundTest in visitor.FoundTests)
                    {
                        if (token.IsCancellationRequested)
                        {
                            return;
                        }
                        var unitTestMarker = new UnitTestMarker(foundTest, document);
                        currentMarker.Add(unitTestMarker);
                        editor.Document.AddMarker(foundTest.LineNumber, unitTestMarker);
                    }
                });
            });
        }
		void HandleDocumentParsed (object sender, EventArgs e)
		{
			if (!AnalysisOptions.EnableUnitTestEditorIntegration)
				return;
			src.Cancel ();
			src = new CancellationTokenSource ();
			var token = src.Token;
			ThreadPool.QueueUserWorkItem (delegate {
				if (token.IsCancellationRequested)
					return;
				var foundTests = GatherUnitTests ();
				if (foundTests == null)
					return;
				Application.Invoke (delegate {
					var editor = document.Editor;
					if (editor == null)
						return;
					var textEditor = editor.Parent;
					if (textEditor == null)
						return;
					var actionMargin = textEditor.ActionMargin;
					if (actionMargin == null)
						return;
					if (actionMargin.IsVisible ^ (foundTests.Count > 0))
						textEditor.QueueDraw ();
					actionMargin.IsVisible = foundTests.Count > 0;
					foreach (var oldMarker in currentMarker)
						editor.Document.RemoveMarker (oldMarker);

					foreach (var foundTest in foundTests) {
						if (token.IsCancellationRequested)
							return;
						var unitTestMarker = new UnitTestMarker (foundTest, document);
						currentMarker.Add (unitTestMarker);
						editor.Document.AddMarker (foundTest.LineNumber, unitTestMarker);
					}
				});
			});
		}
		void HandleDocumentParsed (object sender, EventArgs e)
		{
			if (!AnalysisOptions.EnableUnitTestEditorIntegration)
				return;
			src.Cancel ();
			src = new CancellationTokenSource ();
			var token = src.Token;
			ThreadPool.QueueUserWorkItem (delegate {
				var resolver = document.GetSharedResolver ();
				if (resolver == null || resolver.Result == null)
					return;
				var visitor = new NUnitVisitor (resolver.Result);
				try {
					visitor.VisitSyntaxTree (document.ParsedDocument.GetAst<SyntaxTree> ());
				} catch (Exception ex) {
					LoggingService.LogError ("Exception while analyzing ast for unit tests.", ex);
					return;
				}
				if (token.IsCancellationRequested)
					return;
				Application.Invoke (delegate {
					var editor = document.Editor;
					if (editor == null)
						return;
					var textEditor = editor.Parent;
					if (textEditor == null)
						return;
					var actionMargin = textEditor.ActionMargin;
					if (actionMargin == null)
						return;
					if (actionMargin.IsVisible ^ (visitor.FoundTests.Count > 0))
						textEditor.QueueDraw ();
					actionMargin.IsVisible = visitor.FoundTests.Count > 0;
					foreach (var oldMarker in currentMarker)
						editor.Document.RemoveMarker (oldMarker);

					foreach (var foundTest in visitor.FoundTests) {
						if (token.IsCancellationRequested)
							return;
						var unitTestMarker = new UnitTestMarker (foundTest, document);
						currentMarker.Add (unitTestMarker);
						editor.Document.AddMarker (foundTest.LineNumber, unitTestMarker);
					}
				});
			});
		}