public void ChainConditionalAttribute() { var grammar = new MarkupGrammar(); string input = "<div if=\"false\">hello</div><div elseif=\"true\">world</div><else>that's all</else>"; var nodes = grammar.Nodes(new Position(new SourceContext(input))).Value; var visitor0 = new SpecialNodeVisitor(new VisitorContext()); visitor0.Accept(nodes); var visitor = new ConditionalAttributeVisitor(new VisitorContext()); visitor.Accept(visitor0.Nodes); Assert.AreEqual(3, visitor.Nodes.Count); Assert.IsAssignableFrom(typeof(SpecialNode), visitor.Nodes[0]); Assert.IsAssignableFrom(typeof(SpecialNode), visitor.Nodes[1]); Assert.IsAssignableFrom(typeof(SpecialNode), visitor.Nodes[2]); var ifNode = (SpecialNode)visitor.Nodes[0]; Assert.AreEqual("if", ifNode.Element.Name); var elseifNode = (SpecialNode)visitor.Nodes[1]; Assert.AreEqual("elseif", elseifNode.Element.Name); var elseNode = (SpecialNode)visitor.Nodes[2]; Assert.AreEqual("else", elseNode.Element.Name); }
public void DetectUnlessAttribute() { var grammar = new MarkupGrammar(); string input = "<div unless=\"true\">hello</div>"; var nodes = grammar.Nodes(new Position(new SourceContext(input))).Value; var visitor = new ConditionalAttributeVisitor(new VisitorContext()); visitor.Accept(nodes); Assert.AreEqual(1, visitor.Nodes.Count); Assert.IsAssignableFrom(typeof(SpecialNode), visitor.Nodes[0]); var unlessNode = visitor.Nodes[0] as SpecialNode; Assert.IsNotNull(unlessNode); Assert.AreEqual("unless", unlessNode.Element.Name); }