/// <summary>
 /// Adds markers for each XPathNodeMatch.
 /// </summary>
 public static void AddMarkers(MarkerStrategy markerStrategy, XPathNodeMatch[] nodes)
 {
     foreach (XPathNodeMatch node in nodes)
     {
         AddMarker(markerStrategy, node);
     }
 }
示例#2
0
        /// <summary>
        /// Current instruction frames
        /// </summary>
        public void RefreshDebugHighlightings()
        {
            foreach (var marker in MarkerStrategy.TextMarkers.ToArray())
            {
                if (marker is CoreManager.DebugManagement.DebugStackFrameMarker)
                {
                    marker.Delete();
                }
            }

            if (!CoreManager.DebugManagement.IsDebugging)
            {
                return;
            }

            var bps = CoreManager.DebugManagement.Engine.CallStack;

            if (bps != null)
            {
                foreach (var stack in bps)
                {
                    string fn;
                    uint   ln;
                    if (CoreManager.DebugManagement.Engine.Symbols.GetLineByOffset(stack.InstructionOffset, out fn, out ln))
                    {
                        if (AbsoluteFilePath.EndsWith(fn) && ln < Editor.Document.LineCount)
                        {
                            var m = new CoreManager.DebugManagement.DebugStackFrameMarker(MarkerStrategy, stack, Editor.Document.GetOffset((int)ln, 0));
                            MarkerStrategy.Add(m);
                            m.Redraw();
                        }
                    }
                }
            }
        }
示例#3
0
        public ResultMessage TakeGeo([FromBody] GeoMessage message)
        {
            Strategy strategy;

            switch (message.Type)
            {
            case MessageType.Marker:
            {
                strategy = new MarkerStrategy();
                break;
            }

            case MessageType.Sos:
            {
                strategy = new SosStrategy();
                break;
            }

            default:
            {
                strategy = new UnknownTypeStrategy();
                break;
            }
            }
            return(strategy.Execute(message));
        }
示例#4
0
        public void AddMarker(MarkerStrategy markerStrategy, CodeCoverageSequencePoint sequencePoint)
        {
            if (!IsValidSequencePoint(markerStrategy.Document, sequencePoint))
            {
                return;
            }

            if (sequencePoint.EndLine == sequencePoint.Line)
            {
                LineSegment lineSegment = markerStrategy.Document.GetLineSegment(sequencePoint.Line - 1);
                markerStrategy.AddMarker(new CodeCoverageTextMarker(lineSegment.Offset + sequencePoint.Column - 1, sequencePoint));
            }
            else
            {
                // Sequence point spread across lines.
                for (int line = sequencePoint.Line; line <= sequencePoint.EndLine; ++line)
                {
                    LineSegment lineSegment = markerStrategy.Document.GetLineSegment(line - 1);
                    if (line == sequencePoint.Line)
                    {
                        // First line.
                        markerStrategy.AddMarker(new CodeCoverageTextMarker(lineSegment.Offset + sequencePoint.Column - 1, lineSegment.Length - (sequencePoint.Column - 1), sequencePoint));
                    }
                    else if (line == sequencePoint.EndLine)
                    {
                        // Last line.
                        markerStrategy.AddMarker(new CodeCoverageTextMarker(lineSegment.Offset, sequencePoint.EndColumn - 1, sequencePoint));
                    }
                    else
                    {
                        markerStrategy.AddMarker(new CodeCoverageTextMarker(lineSegment.Offset, lineSegment.Length, sequencePoint));
                    }
                }
            }
        }
示例#5
0
 /// <summary>
 /// Adds text markers for the code coverage sequence points.
 /// </summary>
 /// <remarks>The sequence points are added to the marker strategy even
 /// if they are not all for the same document.</remarks>
 public void AddMarkers(MarkerStrategy markerStrategy, List <CodeCoverageSequencePoint> sequencePoints)
 {
     foreach (CodeCoverageSequencePoint sequencePoint in sequencePoints)
     {
         AddMarker(markerStrategy, sequencePoint);
     }
 }
示例#6
0
        public void Init()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument      document       = MockDocument.Create();
            MarkerStrategy markerStrategy = new MarkerStrategy(document);

            string xml = "<PartCoverReport>\r\n" +
                         "\t<File id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\"/>\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\" asmref=\"1\">\r\n" +
                         "\t\t<Method name=\"GetSchema\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"0\" sc=\"3\" el=\"0\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"-1\" sc=\"4\" el=\"9\" ec=\"20\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"10\" sc=\"3\" el=\"10\" ec=\"4\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(markerStrategy, method.SequencePoints);

            markers = new List <CodeCoverageTextMarker>();
            foreach (CodeCoverageTextMarker marker in markerStrategy.TextMarker)
            {
                markers.Add(marker);
            }
        }
 /// <summary>
 /// Adds a single marker for the XPathNodeMatch.
 /// </summary>
 public static void AddMarker(MarkerStrategy markerStrategy, XPathNodeMatch node)
 {
     if (node.HasLineInfo() && node.Value.Length > 0)
     {
         LineSegment lineSegment = markerStrategy.Document.GetLineSegment(node.LineNumber);
         markerStrategy.AddMarker(new XPathNodeTextMarker(lineSegment.Offset + node.LinePosition, node));
     }
 }
示例#8
0
        public void MarkErrors(ICompilable item, bool sourceHeader)
        {
            RemoveMarks();
            MarkerStrategy markers  = editor.Document.MarkerStrategy;
            string         filename = Compiler.SourceFile(item).ToLower();

            errors.Rows.Clear();

            foreach (CompilerError err in Errors(item, sourceHeader))
            {
                if (filename == err.FileName.ToLower())
                {
                    TextMarker marker = ErrMarker(err);
                    if (marker != null)
                    {
                        markers.AddMarker(marker);
                    }

                    // update data grid
                    DataGridViewRow row = new DataGridViewRow();

                    DataGridViewImageCell img = new DataGridViewImageCell();
                    if (err.IsWarning)
                    {
                        img.Value = Properties.Resources.warningimg;
                    }
                    else
                    {
                        img.Value = Properties.Resources.errorimg;
                    }
                    img.Tag = item;
                    row.Cells.Add(img);

                    DataGridViewTextBoxCell pos = new DataGridViewTextBoxCell();
                    pos.Value = err.Line.ToString() + ":" + err.Column.ToString();
                    row.Cells.Add(pos);

                    DataGridViewTextBoxCell text = new DataGridViewTextBoxCell();
                    text.Value          = CompilerErrors.Message(err);
                    text.Style.WrapMode = DataGridViewTriState.True;
                    text.Tag            = err;
                    row.Cells.Add(text);

                    errors.Rows.Add(row);
                    row.Resizable = DataGridViewTriState.False;
                }
            }

            errors.AutoResizeRows();
            if (item.CompilerResults.Errors.Count > 0)
            {
                ShowErrors();
            }
            editor.Refresh();
        }
示例#9
0
        public void SetUpFixture()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument document = MockDocument.Create();
            string    code     = "\t\t{\r\n" +
                                 "\t\t\tAssert.AreEqual(0, childElementCompletionData.Length, \"\" +\r\n" +
                                 "\t\t\t                \"Not expecting any child elements.\");\r\n" +
                                 "\t\t}\r\n";

            document.TextContent = code;
            MarkerStrategy markerStrategy = new MarkerStrategy(document);

            string xml = "<PartCoverReport>\r\n" +
                         "\t<file id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\" />\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type asmref=\"1\" name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\">\r\n" +
                         "\t\t<Method name=\"NoteElementHasNoChildElements\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"2\" sc=\"4\" el=\"3\" ec=\"57\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"4\" sc=\"3\" el=\"4\" ec=\"4\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(markerStrategy, method.SequencePoints);

            foreach (CodeCoverageTextMarker marker in markerStrategy.TextMarker)
            {
                if (markerOne == null)
                {
                    markerOne = marker;
                }
                else if (markerTwo == null)
                {
                    markerTwo = marker;
                }
                else if (markerThree == null)
                {
                    markerThree = marker;
                }
                else if (markerFour == null)
                {
                    markerFour = marker;
                }
            }
        }
 static bool ContainsCodeCoverageMarkers(MarkerStrategy markerStrategy)
 {
     foreach (TextMarker marker in markerStrategy.TextMarker)
     {
         if (marker is CodeCoverageTextMarker)
         {
             return(true);
         }
     }
     return(false);
 }
        static bool ContainsNonCodeCoverageMarkers(MarkerStrategy markerStrategy)
        {
            int count = 0;

            foreach (TextMarker marker in markerStrategy.TextMarker)
            {
                if (marker is CodeCoverageTextMarker)
                {
                    return(false);
                }
                count++;
            }
            return(count > 0);
        }
示例#12
0
        public void SetUpFixture()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            document = MockDocument.Create();
            string code = "\t\t{\r\n" +
                          "\t\t\tint count = 0;\r\n" +
                          "\t\t}\r\n";

            document.TextContent = code;
            markerStrategy       = new MarkerStrategy(document);

            string xml = "<PartCoverReport>\r\n" +
                         "<File id=\"1\" url=\"c:\\Projects\\Foo\\FooTestFixture.cs\" />\r\n" +
                         "<Assembly id=\"1\" name=\"Foo.Tests\" module=\"C:\\Projects\\Test\\Foo.Tests\\bin\\Foo.Tests.DLL\" domain=\"test-domain-Foo.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type asmref=\"1\" name=\"Foo.Tests.FooTestFixture\" flags=\"1232592\">\r\n" +
                         "\t\t<Method name=\"SimpleTest\">\r\n" +
                         "\t\t\t<pt visit=\"1\" sl=\"1\" fid=\"1\" sc=\"3\" el=\"1\" ec=\"4\" document=\"c:\\Projects\\Foo\\Foo1TestFixture.cs\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" sl=\"2\" fid=\"1\" sc=\"4\" el=\"2\" ec=\"18\" document=\"c:\\Projects\\Foo\\Foo1TestFixture.cs\" />\r\n" +
                         "\t\t\t<pt visit=\"0\" sl=\"3\" fid=\"1\" sc=\"3\" el=\"3\" ec=\"4\" document=\"c:\\Projects\\Foo\\Foo1TestFixture.cs\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";
            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(markerStrategy, method.SequencePoints);

            foreach (CodeCoverageTextMarker marker in markerStrategy.TextMarker)
            {
                if (markerOne == null)
                {
                    markerOne = marker;
                }
                else if (markerTwo == null)
                {
                    markerTwo = marker;
                }
                else if (markerThree == null)
                {
                    markerThree = marker;
                }
            }
        }
        public void SetUpFixture()
        {
            try {
                string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests");
                PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests");
            } catch (Exception) {}

            IDocument document = MockDocument.Create();
            string    code     = "\t\t{\r\n" +
                                 "\t\t\treturn \"<?xml version=\\\"1.0\\\"?>\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"<xs:schema xmlns:xs=\\\"http://www.w3.org/2001/XMLSchema\\\"\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"targetNamespace=\\\"http://www.w3schools.com\\\"\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"xmlns=\\\"http://www.w3schools.com\\\"\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"elementFormDefault=\\\"qualified\\\">\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"<xs:element name=\\\"note\\\">\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"</xs:element>\\r\\n\" +\r\n" +
                                 "\t\t\t\t\"</xs:schema>\";\r\n" +
                                 "\t\t}\r\n";

            document.TextContent = code;
            MarkerStrategy markerStrategy = new MarkerStrategy(document);

            string xml = "<PartCoverReport>\r\n" +
                         "\t<File id=\"1\" url=\"c:\\Projects\\XmlEditor\\Test\\Schema\\SingleElementSchemaTestFixture.cs\" />\r\n" +
                         "\t<Assembly id=\"1\" name=\"XmlEditor.Tests\" module=\"C:\\Projects\\Test\\XmlEditor.Tests\\bin\\XmlEditor.Tests.DLL\" domain=\"test-domain-XmlEditor.Tests.dll\" domainIdx=\"1\" />\r\n" +
                         "\t<Type asmref=\"XmlEditor.Tests\" name=\"XmlEditor.Tests.Schema.SingleElementSchemaTestFixture\" flags=\"1232592\">\r\n" +
                         "\t\t<Method name=\"GetSchema\">\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"2\" sc=\"4\" el=\"9\" ec=\"20\" />\r\n" +
                         "\t\t\t<pt visit=\"1\" fid=\"1\" sl=\"10\" sc=\"3\" el=\"10\" ec=\"4\" />\r\n" +
                         "\t\t</Method>\r\n" +
                         "\t</Type>\r\n" +
                         "</PartCoverReport>";

            CodeCoverageResults     results     = new CodeCoverageResults(new StringReader(xml));
            CodeCoverageMethod      method      = results.Modules[0].Methods[0];
            CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter();

            highlighter.AddMarkers(markerStrategy, method.SequencePoints);

            markers = new List <CodeCoverageTextMarker>();
            foreach (CodeCoverageTextMarker marker in markerStrategy.TextMarker)
            {
                markers.Add(marker);
            }
        }
        public void OneNodeMarked()
        {
            string xml = "<root><foo/></root>";

            XPathNodeMatch[] nodes = XmlView.SelectNodes(xml, "//root");

            IDocument doc = MockDocument.Create();

            doc.TextContent = xml;
            MarkerStrategy markerStrategy = new MarkerStrategy(doc);

            XPathNodeTextMarker.AddMarkers(markerStrategy, nodes);

            List <TextMarker> markers = new List <TextMarker>();

            foreach (TextMarker marker in markerStrategy.TextMarker)
            {
                markers.Add(marker);
            }

            // Remove markers.
            XPathNodeTextMarker.RemoveMarkers(markerStrategy);
            List <TextMarker> markersAfterRemove = new List <TextMarker>();

            foreach (TextMarker markerAfterRemove in markerStrategy.TextMarker)
            {
                markers.Add(markerAfterRemove);
            }

            XPathNodeTextMarker xpathNodeTextMarker = (XPathNodeTextMarker)markers[0];

            Assert.AreEqual(1, markers.Count);
            Assert.AreEqual(1, xpathNodeTextMarker.Offset);
            Assert.AreEqual(4, xpathNodeTextMarker.Length);
            Assert.AreEqual(TextMarkerType.SolidBlock, xpathNodeTextMarker.TextMarkerType);
            Assert.AreEqual(0, markersAfterRemove.Count);
            Assert.AreEqual(XPathNodeTextMarker.MarkerBackColor, xpathNodeTextMarker.Color);
        }
示例#15
0
        void RunXPathQuery()
        {
            XmlView view = XmlView.ActiveXmlView;

            if (view == null)
            {
                return;
            }

            try {
                MarkerStrategy markerStrategy = view.TextEditorControl.Document.MarkerStrategy;
                fileName = view.PrimaryFileName;

                // Clear previous XPath results.
                ClearResults();
                XPathNodeTextMarker.RemoveMarkers(markerStrategy);

                // Run XPath query.
                XPathNodeMatch[] nodes = view.SelectNodes(xPathComboBox.Text, GetNamespaces());
                if (nodes.Length > 0)
                {
                    AddXPathResults(nodes);
                    XPathNodeTextMarker.AddMarkers(markerStrategy, nodes);
                }
                else
                {
                    AddNoXPathResult();
                }
                AddXPathToHistory();
            } catch (XPathException xpathEx) {
                AddErrorResult(xpathEx);
            } catch (XmlException xmlEx) {
                AddErrorResult(xmlEx);
            } finally {
                BringResultsTabToFront();
                view.TextEditorControl.Refresh();
            }
        }
示例#16
0
        public void RefreshErrorHighlightings()
        {
            // Clear old markers
            foreach (var marker in MarkerStrategy.TextMarkers.ToArray())
            {
                if (marker is ErrorMarker)
                {
                    marker.Delete();
                }
            }

            foreach (var err in CoreManager.ErrorManagement.GetErrorsForFile(AbsoluteFilePath))
            {
                var m = ErrorMarker.Create(this, err);

                if (m != null)
                {
                    MarkerStrategy.Add(m);

                    m.Redraw();
                }
            }
        }
        public void NamespaceQuery()
        {
            string xml = "<?xml version='1.0'?>\r\n" +
                         "<Xml1></Xml1>";

            XPathNodeMatch[] nodes = XmlView.SelectNodes(xml, "//namespace::*");

            IDocument doc = MockDocument.Create();

            doc.TextContent = xml;
            MarkerStrategy markerStrategy = new MarkerStrategy(doc);

            XPathNodeTextMarker.AddMarkers(markerStrategy, nodes);

            List <TextMarker> markers = new List <TextMarker>();

            foreach (TextMarker marker in markerStrategy.TextMarker)
            {
                markers.Add(marker);
            }
            Assert.AreEqual(0, markers.Count);
            Assert.AreEqual(1, nodes.Length);
        }
        public void EmptyCommentNode()
        {
            string xml = "<!----><root/>";

            XPathNodeMatch[] nodes = XmlView.SelectNodes(xml, "//comment()");

            IDocument doc = MockDocument.Create();

            doc.TextContent = xml;
            MarkerStrategy markerStrategy = new MarkerStrategy(doc);

            XPathNodeTextMarker.AddMarkers(markerStrategy, nodes);

            List <TextMarker> markers = new List <TextMarker>();

            foreach (TextMarker marker in markerStrategy.TextMarker)
            {
                markers.Add(marker);
            }

            Assert.AreEqual(0, markers.Count);
            Assert.AreEqual(1, nodes.Length);
        }
示例#19
0
        public void RefreshBreakpointHighlightings()
        {
            // Clear old markers
            foreach (var marker in MarkerStrategy.TextMarkers.ToArray())
            {
                if (marker is BreakpointMarker)
                {
                    marker.Delete();
                }
            }

            var bps = CoreManager.BreakpointManagement.GetBreakpointsAt(AbsoluteFilePath);

            if (bps != null)
            {
                foreach (var bpw in bps)
                {
                    var m = new BreakpointMarker(this, bpw);
                    MarkerStrategy.Add(m);

                    m.Redraw();
                }
            }
        }
示例#20
0
 /// <summary>
 /// Removes all CodeCoverageMarkers from the marker strategy.
 /// </summary>
 public void RemoveMarkers(MarkerStrategy markerStrategy)
 {
     markerStrategy.RemoveAll(IsCodeCoverageTextMarkerMatch);
 }
 /// <summary>
 /// Removes all the XPathNodeMarkers from the marker strategy.
 /// </summary>
 public static void RemoveMarkers(MarkerStrategy markerStrategy)
 {
     markerStrategy.RemoveAll(IsXPathNodeTextMarkerMatch);
 }