Example #1
0
        public void DothtmlParser_HierarchyBuildingVisitor_Attribute_TextValue()
        {
            var markup = "<!-- my comment --> @viewModel TestDirective\r\n<div><div><ul><li>item</li></ul><a href='lol'>link</a></div></div>";
            var root = ParseMarkup(markup);

            var visitor = new HierarchyBuildingVisitor
            {
                CursorPosition = 87
            };

            root.Accept(visitor);

            var cursorNode = visitor.LastFoundNode;
            var hierarchyList = visitor.GetHierarchy();

            Assert.AreEqual(6, hierarchyList.Count);

            Assert.IsInstanceOfType(cursorNode, typeof(DothtmlValueTextNode));
            var cursorValue = cursorNode as DothtmlValueTextNode;

            var parentNode = cursorNode.ParentNode;
            Assert.IsInstanceOfType(parentNode, typeof(DothtmlAttributeNode));
            var parentAttribute = parentNode as DothtmlAttributeNode;
            Assert.AreEqual(parentAttribute.AttributeName, "href");

            var parentParentNode = parentAttribute.ParentNode;
            Assert.IsInstanceOfType(parentParentNode, typeof(DothtmlElementNode));
            var parentElement = parentParentNode as DothtmlElementNode;
            Assert.AreEqual(parentElement.TagName, "a");
        }
Example #2
0
        public void DothtmlParser_HierarchyBuildingVisitor_Attribute_BindingValue()
        {
            var markup = "<!-- my comment --> @viewModel TestDirective\r\n<div><div><ul><li>item</li></ul><a href='{value: lol}'>link</a></div></div>";
            var root = ParseMarkup(markup);

            var visitor = new HierarchyBuildingVisitor
            {
                CursorPosition = 95
            };

            root.Accept(visitor);

            var cursorNode = visitor.LastFoundNode;
            var hierarchyList = visitor.GetHierarchy();

            Assert.AreEqual(8, hierarchyList.Count);

            Assert.IsInstanceOfType(cursorNode, typeof(DothtmlValueTextNode));
            var bindingValue = cursorNode as DothtmlValueTextNode;
            Assert.AreEqual(bindingValue.Text, "lol");
            Assert.AreEqual(bindingValue.WhitespacesBefore.Count(), 1);
            Assert.AreEqual(bindingValue.WhitespacesAfter.Count(), 0);

            Assert.IsInstanceOfType(bindingValue.ParentNode, typeof(DothtmlBindingNode));
            var binding = bindingValue.ParentNode as DothtmlBindingNode;
            Assert.AreEqual(binding.Name, "value");
            Assert.AreEqual(binding.Value, bindingValue.Text);

            Assert.IsInstanceOfType(binding.ParentNode, typeof(DothtmlValueBindingNode));
            var cursorValue = binding.ParentNode as DothtmlValueBindingNode;

            Assert.IsInstanceOfType(cursorValue.ParentNode, typeof(DothtmlAttributeNode));
            var parentAttribute = cursorValue.ParentNode as DothtmlAttributeNode;
            Assert.AreEqual(parentAttribute.AttributeName, "href");

            var parentParentNode = parentAttribute.ParentNode;
            Assert.IsInstanceOfType(parentParentNode, typeof(DothtmlElementNode));
            var parentElement = parentParentNode as DothtmlElementNode;
            Assert.AreEqual(parentElement.TagName, "a");
        }
Example #3
0
        public void DothtmlParser_HierarchyBuildingVisitor_Element_UnclosedTagContent()
        {
            var markup = "<!-- my comment --> @viewModel TestDirective\r\n<div><div><ul><li>\r\n\t\t\t\t<a href='lol'></a></li></ul>\r\n</div></div>";
            var root = ParseMarkup(markup);

            var visitor = new HierarchyBuildingVisitor
            {
                CursorPosition = 84
            };

            root.Accept(visitor);

            var hierarchyList = visitor.GetHierarchy();
            var lastElement = hierarchyList.Where( node => node is DothtmlElementNode).First() as DothtmlElementNode;

            Assert.AreEqual(6, hierarchyList.Count);

            Assert.AreEqual(lastElement.FullTagName, "a");

            Assert.IsInstanceOfType(lastElement.ParentNode, typeof(DothtmlElementNode));
            var parentLiElement = lastElement.ParentNode as DothtmlElementNode;
            Assert.AreEqual(parentLiElement.FullTagName, "li");

            Assert.IsInstanceOfType(parentLiElement.ParentNode, typeof(DothtmlElementNode));
            var parentUlElement = parentLiElement.ParentNode as DothtmlElementNode;
            Assert.AreEqual(parentUlElement.FullTagName, "ul");

            Assert.AreEqual((hierarchyList[0] as DothtmlElementNode)?.FullTagName,"a");
            Assert.AreEqual((hierarchyList[1] as DothtmlElementNode)?.FullTagName, "li");
            Assert.AreEqual((hierarchyList[2] as DothtmlElementNode)?.FullTagName, "ul");
            Assert.AreEqual((hierarchyList[3] as DothtmlElementNode)?.FullTagName, "div");
            Assert.AreEqual((hierarchyList[4] as DothtmlElementNode)?.FullTagName, "div");
            Assert.IsInstanceOfType(hierarchyList[5], typeof(DothtmlRootNode));
        }