public void Attributes()
        {
            TestParser parser = new TestParser(CreateRootState());

            parser.Parse(@"
<doc>
	<tag.a name=""foo"" arg=5 wibble = 6 bar.baz = 'y.ff7]' $ />
</doc>
",
                         delegate
            {
                parser.AssertStateIs <XmlTagState> ();
                parser.AssertAttributes("name", "foo", "arg", "5", "wibble", "6", "bar.baz", "y.ff7]");
            }
                         );
            parser.AssertEmpty();
            parser.AssertErrorCount(0);
        }
Пример #2
0
        public void AttributeName()
        {
            TestParser parser = new TestParser(CreateRootState());

            parser.Parse(@"
<doc>
	<tag.a>
		<tag.b id=""$foo"" />
	</tag.a>
</doc>
",
                         delegate {
                parser.AssertStateIs <XmlDoubleQuotedAttributeValueState> ();
                parser.AssertPath("//doc/tag.a/tag.b/@id");
            }
                         );
            parser.AssertEmpty();
            parser.AssertErrorCount(0);
        }
Пример #3
0
        public void Directives()
        {
            var parser = new TestParser(CreateRootState(), true);

            parser.Parse(@"<%@ Page Language=""C#"" Inherits=""SomeGenericType<int>"" %>");
            parser.AssertNoErrors();
            var doc       = (XDocument)parser.Nodes.Peek();
            var directive = doc.Nodes.First() as AspNetDirective;

            Assert.NotNull(directive);
            Assert.AreEqual("Page", directive.Name.FullName);
            Assert.AreEqual(2, directive.Attributes.Count());
            var att = directive.Attributes[0];

            Assert.AreEqual("Language", att.Name.FullName);
            Assert.AreEqual("C#", att.Value);
            att = directive.Attributes[1];
            Assert.AreEqual("Inherits", att.Name.FullName);
            Assert.AreEqual("SomeGenericType<int>", att.Value);
        }
Пример #4
0
        public void AttributeRecovery()
        {
            TestParser parser = new TestParser(CreateRootState());

            parser.Parse(@"
<doc>
	<tag.a>
		<tag.b arg='fff' sdd = sdsds= 'foo' ff $ />
	</tag.a>
<a><b valid/></a>
</doc>
",
                         delegate {
                parser.AssertStateIs <XmlTagState> ();
                parser.AssertAttributes("arg", "fff", "sdd", "", "sdsds", "foo", "ff", "");
                parser.AssertErrorCount(1);
            }
                         );
            parser.AssertEmpty();
            parser.AssertErrorCount(1);
        }
Пример #5
0
        public void NamespacedAttributes()
        {
            var parser = new TestParser(CreateRootState(), true);

            parser.Parse(@"<tag foo:bar='1' foo:bar:baz='2' foo='3' />");
            parser.AssertEmpty();
            var doc = (XDocument)parser.Nodes.Peek();
            var el  = (XElement)doc.FirstChild;

            Assert.AreEqual(3, el.Attributes.Count());
            Assert.AreEqual("foo", el.Attributes.ElementAt(0).Name.Prefix);
            Assert.AreEqual("bar", el.Attributes.ElementAt(0).Name.Name);
            Assert.AreEqual("foo", el.Attributes.ElementAt(1).Name.Prefix);
            Assert.AreEqual("bar:baz", el.Attributes.ElementAt(1).Name.Name);
            Assert.IsNull(el.Attributes.ElementAt(2).Name.Prefix);
            Assert.AreEqual("foo", el.Attributes.ElementAt(2).Name.Name);
            Assert.AreEqual(3, el.Attributes.Count());
            parser.AssertErrorCount(1);
            Assert.AreEqual(1, parser.Errors [0].Region.BeginLine);
            Assert.AreEqual(25, parser.Errors [0].Region.BeginColumn);
        }
Пример #6
0
        public void TestAutoClosing()
        {
            TestParser parser = new TestParser(CreateRootState());

            parser.Parse(@"
<html>
	<body>
		<p><img>$
		<p><div> $ </div>
		<p>
		<p><a href =""http://mono-project.com/"" ><b>foo $ </a>
		<p>
		<p>$
		<div><div>$</div></div>
	</body>
</html>
",
                         delegate {
                parser.AssertPath("//html/body/p");
            },
                         delegate {
                parser.AssertPath("//html/body/div");
            },
                         delegate {
                parser.AssertPath("//html/body/p/a/b");
            },
                         delegate {
                parser.AssertPath("//html/body/p");
            },
                         delegate {
                parser.AssertPath("//html/body/div/div");
            }
                         );
            parser.AssertEmpty();
            parser.AssertErrorCount(1);
        }
Пример #7
0
        public void AttributeWithExpression()
        {
            var parser = new TestParser(CreateRootState(), true);

            parser.Parse(@"<tag
foo='<%=5$%>'
bar=""<%$$5$%><%--$--%>""
baz='<%#5$%>=<%:fhfjhf %0 $%>'
quux = <% 5 $%>  />", delegate {
                parser.AssertNodeIs <AspNetRenderExpression> ();
            }, delegate {
                parser.AssertNodeIs <AspNetResourceExpression> ();
            }, delegate {
                parser.AssertNodeIs <AspNetServerComment> ();
            }, delegate {
                parser.AssertNodeIs <AspNetDataBindingExpression> ();
            }, delegate {
                parser.AssertNodeIs <AspNetHtmlEncodedExpression> ();
            }, delegate {
                parser.AssertNodeIs <AspNetRenderBlock> ();
            });
            parser.AssertNoErrors();
            var doc = (XDocument)parser.Nodes.Peek();
        }
Пример #8
0
        public void SimpleTree()
        {
            var parser = new TestParser(CreateRootState(), true);

            parser.Parse(@"
<doc>
	<a>
		<b>
			<c/>
			<d>
				<e/>
			</d>
			<f>
				<g/>
			</f>
		</b>
	</a>
</doc>");
            parser.AssertErrorCount(0);

            var doc = ((XDocument)parser.Nodes.Peek()).RootElement;

            Assert.NotNull(doc);
            Assert.AreEqual("doc", doc.Name.Name);
            Assert.True(doc.IsEnded);

            var a = (XElement)doc.FirstChild;

            Assert.NotNull(a);
            Assert.AreEqual("a", a.Name.Name);
            Assert.True(a.IsEnded);
            Assert.False(a.IsSelfClosing);
            Assert.IsNull(a.NextSibling);

            var b = (XElement)a.FirstChild;

            Assert.NotNull(b);
            Assert.AreEqual("b", b.Name.Name);
            Assert.True(b.IsEnded);
            Assert.False(b.IsSelfClosing);
            Assert.IsNull(b.NextSibling);

            var c = (XElement)b.FirstChild;

            Assert.NotNull(c);
            Assert.AreEqual("c", c.Name.Name);
            Assert.True(c.IsEnded);
            Assert.True(c.IsSelfClosing);
            Assert.IsNull(c.FirstChild);

            var d = (XElement)c.NextSibling;

            Assert.True(d.IsEnded);
            Assert.False(d.IsSelfClosing);
            Assert.AreEqual("d", d.Name.Name);

            var e = (XElement)d.FirstChild;

            Assert.NotNull(e);
            Assert.True(e.IsEnded);
            Assert.True(e.IsSelfClosing);
            Assert.AreEqual("e", e.Name.Name);

            var f = (XElement)d.NextSibling;

            Assert.AreEqual(f, b.LastChild);
            Assert.True(f.IsEnded);
            Assert.False(f.IsSelfClosing);
            Assert.AreEqual("f", f.Name.Name);

            var g = (XElement)f.FirstChild;

            Assert.NotNull(g);
            Assert.True(g.IsEnded);
            Assert.True(g.IsSelfClosing);
            Assert.AreEqual("g", g.Name.Name);
        }