Exemple #1
0
        public void InvalidElementRange(string testFileName, int nodeIndex, string elementName, int startLine, int startColumn, int endLine, int endColumn)
        {
            string            testXml      = LoadTestFile("TestFiles", testFileName + ".xml");
            TextPositions     xmlPositions = new TextPositions(testXml);
            XmlDocumentSyntax xmlDocument  = Parser.ParseText(testXml);

            List <XSNode> nodes = xmlDocument.GetSemanticModel(xmlPositions);

            Assert.NotNull(nodes);

            XSNode targetNode = nodes[nodeIndex];

            Assert.NotNull(targetNode);

            Assert.IsAssignableFrom <XSElement>(targetNode);
            XSElement targetElement = (XSElement)targetNode;

            Assert.Equal(elementName, targetElement.Name);
            Assert.False(targetElement.IsValid, "IsValid");

            Range expectedRange = new Range(
                start: new Position(startLine, startColumn),
                end: new Position(endLine, endColumn)
                );

            Assert.Equal(expectedRange, targetElement.Range);
        }
Exemple #2
0
        void NodeRange(string testFileName, int index, int startLine, int startColumn, int endLine, int endColumn)
        {
            string            testXml      = LoadTestFile("TestFiles", testFileName + ".xml");
            TextPositions     xmlPositions = new TextPositions(testXml);
            XmlDocumentSyntax xmlDocument  = Parser.ParseText(testXml);

            List <XSNode> nodes = xmlDocument.GetSemanticModel(xmlPositions);

            Assert.NotNull(nodes);
            Assert.InRange(index, 0, nodes.Count - 1);

            XSNode node = nodes[index];

            Assert.NotNull(node);

            TestOutput.WriteLine("Node {0} at {1} is {2}.",
                                 index,
                                 node.Range,
                                 node.Kind
                                 );

            Range expectedRange = new Range(
                start: new Position(startLine, startColumn),
                end: new Position(endLine, endColumn)
                );

            Assert.Equal(expectedRange, node.Range);
        }
Exemple #3
0
        void NodeCount(string testFileName, int expectedNodeCount)
        {
            string            testXml      = LoadTestFile("TestFiles", testFileName + ".xml");
            TextPositions     xmlPositions = new TextPositions(testXml);
            XmlDocumentSyntax xmlDocument  = Parser.ParseText(testXml);

            List <XSNode> nodes = xmlDocument.GetSemanticModel(xmlPositions);

            Assert.NotNull(nodes);
            Assert.Equal(expectedNodeCount, nodes.Count);
        }
Exemple #4
0
        void NodeKind(string testFileName, int index, XSNodeKind nodeKind)
        {
            string            testXml      = LoadTestFile("TestFiles", testFileName + ".xml");
            TextPositions     xmlPositions = new TextPositions(testXml);
            XmlDocumentSyntax xmlDocument  = Parser.ParseText(testXml);

            List <XSNode> nodes = xmlDocument.GetSemanticModel(xmlPositions);

            Assert.NotNull(nodes);
            Assert.InRange(index, 0, nodes.Count - 1);

            XSNode node = nodes[index];

            Assert.NotNull(node);

            Assert.Equal(nodeKind, node.Kind);
        }
Exemple #5
0
        void ElementAttributesRange(string testFileName, string elementName, int startLine, int startColumn, int endLine, int endColumn)
        {
            string            testXml      = LoadTestFile("TestFiles", testFileName + ".xml");
            TextPositions     xmlPositions = new TextPositions(testXml);
            XmlDocumentSyntax xmlDocument  = Parser.ParseText(testXml);

            List <XSNode> nodes = xmlDocument.GetSemanticModel(xmlPositions);

            Assert.NotNull(nodes);

            XSNode targetNode = nodes.Find(node => node.Name == elementName);

            Assert.NotNull(targetNode);

            Assert.IsAssignableFrom <XSElement>(targetNode);
            XSElement targetElement = (XSElement)targetNode;

            Range expectedRange = new Range(
                start: new Position(startLine, startColumn),
                end: new Position(endLine, endColumn)
                );

            Assert.Equal(expectedRange, targetElement.AttributesRange);
        }
        /// <summary>
        ///     Create a new <see cref="XmlLocator"/>.
        /// </summary>
        /// <param name="document">
        ///     The underlying XML document.
        /// </param>
        /// <param name="documentPositions">
        ///     The position-lookup for the underlying XML document text.
        /// </param>
        public XmlLocator(XmlDocumentSyntax document, TextPositions documentPositions)
        {
            if (document == null)
            {
                throw new ArgumentNullException(nameof(document));
            }

            if (documentPositions == null)
            {
                throw new ArgumentNullException(nameof(documentPositions));
            }

            _documentPositions = documentPositions;

            List <XSNode> allNodes = document.GetSemanticModel(_documentPositions);

            foreach (XSNode node in allNodes)
            {
                _nodeRanges.Add(node.Range);
                _nodesByStartPosition.Add(node.Range.Start, node);
            }

            _nodeRanges.Sort();
        }