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"); }
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"); }
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)); }