From: Oleg T. <he...@us...> - 2004-10-09 19:54:14
|
Update of /cvsroot/mvp-xml/XPointer/v1/test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11971/v1/test Modified Files: EntryPoint.cs XPointerParserTests.cs XPointerReaderTests.cs XPointerTest.csproj XPointerTest.csproj.user changelog.txt Log Message: Added unit tests. Index: EntryPoint.cs =================================================================== RCS file: /cvsroot/mvp-xml/XPointer/v1/test/EntryPoint.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- EntryPoint.cs 28 Sep 2004 09:10:00 -0000 1.1 +++ EntryPoint.cs 9 Oct 2004 19:53:49 -0000 1.2 @@ -9,8 +9,17 @@ { public static void Main() { - XPointerParserTests pt = new XPointerParserTests(); - pt.CircumflexErrorTest(); + //XPointerParserTests pt = new XPointerParserTests(); + //pt.CircumflexErrorTest(); + XPointerReaderTests rt = new XPointerReaderTests(); + try + { + rt.XPointerSchemeScalarResultTest(); + } + catch (Exception e) + { + Console.WriteLine(e); + } } } } Index: XPointerReaderTests.cs =================================================================== RCS file: /cvsroot/mvp-xml/XPointer/v1/test/XPointerReaderTests.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- XPointerReaderTests.cs 28 Sep 2004 09:10:00 -0000 1.1 +++ XPointerReaderTests.cs 9 Oct 2004 19:53:49 -0000 1.2 @@ -1,20 +1,392 @@ using System; +using System.Xml.XPath; +using System.Xml; +using System.Text; +using System.IO; -using Mvp.Xml.Common; +using Mvp.Xml.Tests; using Mvp.Xml.XPointer; using NUnit.Framework; namespace Mvp.Xml.XPointer.Test { /// <summary> - /// Summary description for XPointerReaderTests. + /// Unit tests for XPointerReader class. /// </summary> [TestFixture] public class XPointerReaderTests - { - public XPointerReaderTests() + { + /// <summary> + /// xmlns() + xpath1() + namespaces works + /// </summary> + [Test] + public void XmlNsXPath1SchemeTest() + { + string xptr = "xmlns(m=mvp-xml)xpath1(m:dsPubs/m:publishers[m:pub_id='1389']/m:pub_name)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + StringBuilder sb = new StringBuilder(); + while (xpr.Read()) + { + sb.Append(xpr.ReadOuterXml()); + } + string expected = @"<pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name>"; + Assert.AreEqual(sb.ToString(), expected); + } + + /// <summary> + /// xpath1() + namespaces doesn't work w/o xmlns() + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void XPath1SchemeWithoutXmlnsTest() + { + string xptr = "xpath1(m:dsPubs/m:publishers[m:pub_id='1389']/m:pub_name)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + StringBuilder sb = new StringBuilder(); + while (xpr.Read()) { + sb.Append(xpr.ReadOuterXml()); + } + string expected = @"<pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name>"; + Assert.AreEqual(sb.ToString(), expected); + } + + /// <summary> + /// xpath1() that doesn't select a node w/o namespaces + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void XPath1SchemeNoSelectedNodeTest() + { + string xptr = "xpath1(no-such-node/foo)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + while (xpr.Read()) {} + } + + /// <summary> + /// xpath1() that returns scalar value, not a node + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void XPath1SchemeScalarResultTest() + { + string xptr = "xpath1(2+2)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + while (xpr.Read()) {} + } + + /// <summary> + /// xmlns() + xpointer() + namespaces works + /// </summary> + [Test] + public void XmlNsXPointerSchemeTest() + { + string xptr = "xmlns(m=mvp-xml)xpointer(m:dsPubs/m:publishers[m:pub_id='1389']/m:pub_name)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + StringBuilder sb = new StringBuilder(); + while (xpr.Read()) + { + sb.Append(xpr.ReadOuterXml()); + } + string expected = @"<pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name>"; + Assert.AreEqual(sb.ToString(), expected); + } + + /// <summary> + /// xpointer() + namespaces doesn't work w/o xmlns() + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void XPointerSchemeWithoutXmlnsTest() + { + string xptr = "xpointer(m:dsPubs/m:publishers[m:pub_id='1389']/m:pub_name)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + StringBuilder sb = new StringBuilder(); + while (xpr.Read()) + { + sb.Append(xpr.ReadOuterXml()); + } + string expected = @"<pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name>"; + Assert.AreEqual(sb.ToString(), expected); + } + + /// <summary> + /// xpointer() that doesn't select a node w/o namespaces + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void XPointerSchemeNoSelectedNodeTest() + { + string xptr = "xpointer(no-such-node/foo)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + while (xpr.Read()) {} + } + + /// <summary> + /// xpointer() that returns scalar value, not a node + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void XPointerSchemeScalarResultTest() + { + string xptr = "xpointer(2+2)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + while (xpr.Read()) {} + } + + /// <summary> + /// superfluous xmlns() doesn't hurt + /// </summary> + [Test] + public void SuperfluousXmlNsSchemeTest() { + string xptr = "xmlns(m=mvp-xml)xpointer(dsPubs/publishers[pub_id='1389']/pub_name)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + StringBuilder sb = new StringBuilder(); + while (xpr.Read()) + { + sb.Append(xpr.ReadOuterXml()); + } + string expected = @"<pub_name>Algodata Infosystems</pub_name>"; + Assert.AreEqual(sb.ToString(), expected); + } + + /// <summary> + /// xpointer() + xmlns() + namespaces doesn't work + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void XmlnsAfterTest() + { + string xptr = "xpointer(m:dsPubs/m:publishers[m:pub_id='1389']/m:pub_name)xmlns(m=mvp-xml)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + while (xpr.Read()) {} + } + + /// <summary> + /// namespace re3efinition doesn't hurt + /// </summary> + [Test] + public void NamespaceRedefinitionTest() + { + string xptr = "xmlns(m=mvp-xml)xmlns(m=http://foo.com)xmlns(m=mvp-xml)xpointer(m:dsPubs/m:publishers[m:pub_id='1389']/m:pub_name)"; + XmlReader reader = new XmlTextReader(Globals.GetResource(Globals.PubsNsResource)); + XPointerReader xpr = new XPointerReader(reader, xptr); + StringBuilder sb = new StringBuilder(); + while (xpr.Read()) + { + sb.Append(xpr.ReadOuterXml()); + } + string expected = @"<pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name><pub_name xmlns=""mvp-xml"">Algodata Infosystems</pub_name>"; + Assert.AreEqual(sb.ToString(), expected); + } + + /// <summary> + /// Shorthand pointer works + /// </summary> + [Test] + public void ShorthandTest() + { + string xptr = "o10535"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + string expected = @"<Item orderID=""o10535""> + <OrderDate> 6/13/95</OrderDate> + <ShipAddress> Mataderos 2312</ShipAddress> + </Item>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } + + /// <summary> + /// Shorthand pointer works via stream + /// </summary> + [Test] + public void ShorthandViaStreamTest() + { + string xptr = "o10535"; + FileInfo file = new FileInfo("../../northwind.xml"); + using (FileStream fs = file.OpenRead()) + { + XPointerReader xpr = new XPointerReader(new Uri(file.FullName), fs, xptr); + string expected = @"<Item orderID=""o10535""> + <OrderDate> 6/13/95</OrderDate> + <ShipAddress> Mataderos 2312</ShipAddress> + </Item>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } + } + + /// <summary> + /// Shorthand pointer points to nothing + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void ShorthandNotFoundTest() + { + string xptr = "no-such-id"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + } + + /// <summary> + /// element() scheme pointer works + /// </summary> + [Test] + public void ElementSchemeTest() + { + string xptr = "element(o10535)"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + string expected = @"<Item orderID=""o10535""> + <OrderDate> 6/13/95</OrderDate> + <ShipAddress> Mataderos 2312</ShipAddress> + </Item>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } + + /// <summary> + /// element() scheme pointer works + /// </summary> + [Test] + public void ElementSchemeTest2() + { + string xptr = "element(o10535/1)"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + string expected = @"<OrderDate> 6/13/95</OrderDate>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } + + /// <summary> + /// element() scheme pointer works + /// </summary> + [Test] + public void ElementSchemeTest3() + { + string xptr = "element(/1/1/2)"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + string expected = @"<CompanyName> Alfreds Futterkiste</CompanyName>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } + /// <summary> + /// element() scheme pointer points to nothing + /// </summary> + [Test] + [ExpectedException(typeof(NoSubresourcesIdentifiedException))] + public void ElementSchemeNotFoundTest() + { + string xptr = "element(no-such-id)"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); } + + /// <summary> + /// compound pointer + /// </summary> + [Test] + public void CompoundPointerTest() + { + string xptr = "xmlns(p=12345)xpath1(/no/such/node) xpointer(/and/such) element(/1/1/2) element(o10535/1)"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + string expected = @"<CompanyName> Alfreds Futterkiste</CompanyName>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } + + /// <summary> + /// Unknown scheme pointer + /// </summary> + [Test] + public void UnknownSchemeTest() + { + string xptr = "dummy(foo) element(/1/1/2)"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + string expected = @"<CompanyName> Alfreds Futterkiste</CompanyName>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } + + /// <summary> + /// Unknown scheme pointer + /// </summary> + [Test] + [ExpectedException(typeof(XPointerSyntaxException))] + public void UnknownSchemeTest2() + { + string xptr = "foo:dummy(bar) element(/1/1/2)"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + string expected = @"<CompanyName> Alfreds Futterkiste</CompanyName>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } + + /// <summary> + /// Unknown scheme pointer + /// </summary> + [Test] + public void UnknownSchemeTest3() + { + string xptr = "xmlns(foo=http://foo.com/schemas)foo:dummy(bar) element(/1/1/2)"; + XmlReader reader = new XmlTextReader("../../northwind.xml"); + XPointerReader xpr = new XPointerReader(reader, xptr); + string expected = @"<CompanyName> Alfreds Futterkiste</CompanyName>"; + while (xpr.Read()) + { + Assert.AreEqual(xpr.ReadOuterXml(), expected); + return; + } + throw new InvalidOperationException("This means shorthand XPointer didn't work as expected."); + } } } Index: changelog.txt =================================================================== RCS file: /cvsroot/mvp-xml/XPointer/v1/test/changelog.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- changelog.txt 28 Sep 2004 09:10:00 -0000 1.1 +++ changelog.txt 9 Oct 2004 19:53:49 -0000 1.2 @@ -1,3 +1,7 @@ +October 9, 2004 + +Added unit tests. + --------------------------------------------------------- September 28, 2004 Index: XPointerTest.csproj =================================================================== RCS file: /cvsroot/mvp-xml/XPointer/v1/test/XPointerTest.csproj,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- XPointerTest.csproj 28 Sep 2004 09:10:00 -0000 1.1 +++ XPointerTest.csproj 9 Oct 2004 19:53:49 -0000 1.2 @@ -15,7 +15,7 @@ DefaultHTMLPageLayout = "Grid" DefaultTargetSchema = "IE50" DelaySign = "false" - OutputType = "Library" + OutputType = "Exe" PreBuildEvent = "" PostBuildEvent = "" RootNamespace = "Mvp.Xml.XPointer.Test" @@ -100,11 +100,23 @@ <Files> <Include> <File + RelPath = "changelog.txt" + BuildAction = "Content" + /> + <File RelPath = "EntryPoint.cs" SubType = "Code" BuildAction = "Compile" /> <File + RelPath = "northwind.dtd" + BuildAction = "None" + /> + <File + RelPath = "northwind.xml" + BuildAction = "None" + /> + <File RelPath = "XPointerParserTests.cs" SubType = "Code" BuildAction = "Compile" Index: XPointerParserTests.cs =================================================================== RCS file: /cvsroot/mvp-xml/XPointer/v1/test/XPointerParserTests.cs,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- XPointerParserTests.cs 28 Sep 2004 09:10:00 -0000 1.1 +++ XPointerParserTests.cs 9 Oct 2004 19:53:49 -0000 1.2 @@ -62,7 +62,7 @@ [Test] public void UnknownSchemePointer() { - Pointer p = Pointer.Compile("xpath(/foo) foo(abr)"); + Pointer p = Pointer.Compile("xpath1(/foo) foo(abr)"); } } } Index: XPointerTest.csproj.user =================================================================== RCS file: /cvsroot/mvp-xml/XPointer/v1/test/XPointerTest.csproj.user,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- XPointerTest.csproj.user 28 Sep 2004 09:10:00 -0000 1.1 +++ XPointerTest.csproj.user 9 Oct 2004 19:53:49 -0000 1.2 @@ -40,7 +40,7 @@ CopyProjectDestinationFolder = "" CopyProjectUncPath = "" CopyProjectOption = "0" - ProjectView = "ProjectFiles" + ProjectView = "ShowAllFiles" ProjectTrust = "0" /> </CSHARP> |