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