using System.IO;\r
using System.Text;\r
using System.Xml;\r
+using System.Xml.Schema;\r
+using System.Xml.XPath;\r
\r
using NUnit.Framework;\r
\r
namespace MonoTests.System.Xml\r
{\r
[TestFixture]\r
- public class XmlReaderTests\r
+ public class XmlReaderTests : Assertion\r
{\r
[SetUp]\r
public void GetReady ()\r
// copy from XmlTextReaderTests\r
private void AssertStartDocument (XmlReader xmlReader)\r
{\r
- Assertion.Assert (xmlReader.ReadState == ReadState.Initial);\r
- Assertion.Assert (xmlReader.NodeType == XmlNodeType.None);\r
- Assertion.Assert (xmlReader.Depth == 0);\r
- Assertion.Assert (!xmlReader.EOF);\r
+ Assert (xmlReader.ReadState == ReadState.Initial);\r
+ Assert (xmlReader.NodeType == XmlNodeType.None);\r
+ Assert (xmlReader.Depth == 0);\r
+ Assert (!xmlReader.EOF);\r
}\r
\r
private void AssertNode (\r
string value,\r
int attributeCount)\r
{\r
- Assertion.Assert ("Read() return value", xmlReader.Read ());\r
- Assertion.Assert ("ReadState", xmlReader.ReadState == ReadState.Interactive);\r
- Assertion.Assert ("!EOF", !xmlReader.EOF);\r
- AssertNodeValues (xmlReader, nodeType, depth, isEmptyElement, name, prefix, localName, namespaceURI, value, attributeCount);\r
+ Assert ("Read() return value", xmlReader.Read ());\r
+ Assert ("ReadState", xmlReader.ReadState == ReadState.Interactive);\r
+ Assert ("!EOF", !xmlReader.EOF);\r
+ AssertNodeValues ("", xmlReader, nodeType, depth,\r
+ isEmptyElement, name, prefix, localName,\r
+ namespaceURI, value, value != String.Empty,\r
+ attributeCount, attributeCount > 0);\r
}\r
\r
private void AssertNodeValues (\r
+ string label,\r
XmlReader xmlReader,\r
XmlNodeType nodeType,\r
int depth,\r
string value,\r
int attributeCount)\r
{\r
- Assertion.AssertEquals ("NodeType", nodeType, xmlReader.NodeType);\r
- Assertion.AssertEquals ("Depth", depth, xmlReader.Depth);\r
- Assertion.AssertEquals ("IsEmptyElement", isEmptyElement, xmlReader.IsEmptyElement);\r
+ AssertNodeValues (label, xmlReader, nodeType, depth,\r
+ isEmptyElement, name, prefix, localName,\r
+ namespaceURI, value, value != String.Empty,\r
+ attributeCount, attributeCount > 0);\r
+ }\r
+\r
+ private void AssertNodeValues (\r
+ string label,\r
+ XmlReader xmlReader,\r
+ XmlNodeType nodeType,\r
+ int depth,\r
+ bool isEmptyElement,\r
+ string name,\r
+ string prefix,\r
+ string localName,\r
+ string namespaceURI,\r
+ string value,\r
+ bool hasValue,\r
+ int attributeCount,\r
+ bool hasAttributes)\r
+ {\r
+ label = String.Concat (label, "(", xmlReader.GetType ().Name, ")");\r
+ AssertEquals (label + ": NodeType", nodeType, xmlReader.NodeType);\r
+ AssertEquals (label + ": IsEmptyElement", isEmptyElement, xmlReader.IsEmptyElement);\r
+\r
+ AssertEquals (label + ": name", name, xmlReader.Name);\r
\r
- Assertion.AssertEquals ("name", name, xmlReader.Name);\r
+ AssertEquals (label + ": prefix", prefix, xmlReader.Prefix);\r
\r
- Assertion.AssertEquals ("prefix", prefix, xmlReader.Prefix);\r
+ AssertEquals (label + ": localName", localName, xmlReader.LocalName);\r
\r
- Assertion.AssertEquals ("localName", localName, xmlReader.LocalName);\r
+ AssertEquals (label + ": namespaceURI", namespaceURI, xmlReader.NamespaceURI);\r
\r
- Assertion.AssertEquals ("namespaceURI", namespaceURI, xmlReader.NamespaceURI);\r
+ AssertEquals (label + ": Depth", depth, xmlReader.Depth);\r
\r
- Assertion.AssertEquals ("hasValue", (value != String.Empty), xmlReader.HasValue);\r
+ AssertEquals (label + ": hasValue", hasValue, xmlReader.HasValue);\r
\r
- Assertion.AssertEquals ("Value", value, xmlReader.Value);\r
+ AssertEquals (label + ": Value", value, xmlReader.Value);\r
\r
- Assertion.AssertEquals ("hasAttributes", attributeCount > 0, xmlReader.HasAttributes);\r
+ AssertEquals (label + ": hasAttributes", hasAttributes, xmlReader.HasAttributes);\r
\r
- Assertion.AssertEquals ("attributeCount", attributeCount, xmlReader.AttributeCount);\r
+ AssertEquals (label + ": attributeCount", attributeCount, xmlReader.AttributeCount);\r
}\r
\r
private void AssertAttribute (\r
string namespaceURI,\r
string value)\r
{\r
- Assertion.AssertEquals ("value", value, xmlReader [name]);\r
+ AssertEquals ("value", value, xmlReader [name]);\r
\r
- Assertion.Assert (xmlReader.GetAttribute (name) == value);\r
+ Assert (xmlReader.GetAttribute (name) == value);\r
\r
if (namespaceURI != String.Empty) {\r
- Assertion.Assert (xmlReader[localName, namespaceURI] == value);\r
- Assertion.Assert (xmlReader.GetAttribute (localName, namespaceURI) == value);\r
+ Assert (xmlReader[localName, namespaceURI] == value);\r
+ Assert (xmlReader.GetAttribute (localName, namespaceURI) == value);\r
}\r
}\r
\r
private void AssertEndDocument (XmlReader xmlReader)\r
{\r
- Assertion.Assert ("could read", !xmlReader.Read ());\r
- Assertion.AssertEquals ("NodeType is not XmlNodeType.None", XmlNodeType.None, xmlReader.NodeType);\r
- Assertion.AssertEquals ("Depth is not 0", 0, xmlReader.Depth);\r
- Assertion.AssertEquals ("ReadState is not ReadState.EndOfFile", ReadState.EndOfFile, xmlReader.ReadState);\r
- Assertion.Assert ("not EOF", xmlReader.EOF);\r
+ Assert ("could read", !xmlReader.Read ());\r
+ AssertEquals ("NodeType is not XmlNodeType.None", XmlNodeType.None, xmlReader.NodeType);\r
+ AssertEquals ("Depth is not 0", 0, xmlReader.Depth);\r
+ AssertEquals ("ReadState is not ReadState.EndOfFile", ReadState.EndOfFile, xmlReader.ReadState);\r
+ Assert ("not EOF", xmlReader.EOF);\r
\r
xmlReader.Close ();\r
- Assertion.AssertEquals ("ReadState is not ReadState.Cosed", ReadState.Closed, xmlReader.ReadState);\r
+ AssertEquals ("ReadState is not ReadState.Cosed", ReadState.Closed, xmlReader.ReadState);\r
}\r
\r
private delegate void TestMethod (XmlReader reader);\r
private void RunTest (string xml, TestMethod method)\r
{\r
xtr = new XmlTextReader (new StringReader (xml));\r
- try {\r
- method (xtr);\r
- } catch (AssertionException ex) {\r
- throw new AssertionException ("XmlTextReader failed: " + ex.Message, ex);\r
- }\r
+ method (xtr);\r
+\r
+ // DTD validation\r
+ xtr = new XmlTextReader (new StringReader (xml));\r
+ XmlValidatingReader xvr = new XmlValidatingReader (xtr);\r
+ xvr.ValidationType = ValidationType.DTD;\r
+ xvr.EntityHandling = EntityHandling.ExpandCharEntities;\r
+ method (xvr);\r
\r
+ // XSD validation\r
+ xtr = new XmlTextReader (new StringReader (xml));\r
+ xvr = new XmlValidatingReader (xtr);\r
+ xvr.EntityHandling = EntityHandling.ExpandCharEntities;\r
+ method (xvr);\r
+\r
+ document.XmlResolver = null;\r
document.LoadXml (xml);\r
xnr = new XmlNodeReader (document);\r
- try {\r
- method (xnr);\r
- } catch (AssertionException ex) {\r
- throw new AssertionException ("XmlNodeReader failed: " + ex.Message, ex);\r
- }\r
+ method (xnr);\r
+#if NET_2_0\r
+/*\r
+ // XPathNavigatorReader tests\r
+ System.Xml.XPath.XPathDocument doc = new System.Xml.XPath.XPathDocument (new StringReader (xml));\r
+ XmlReader xpr = doc.CreateNavigator ().ReadSubtree ();\r
+ method (xpr);\r
+*/\r
+#endif\r
}\r
\r
\r
\r
private void InitialState (XmlReader reader)\r
{\r
- Assertion.AssertEquals ("Depth", 0, reader.Depth);\r
- Assertion.AssertEquals ("EOF", false, reader.EOF);\r
- Assertion.AssertEquals ("HasValue", false, reader.HasValue);\r
- Assertion.AssertEquals ("IsEmptyElement", false, reader.IsEmptyElement);\r
- Assertion.AssertEquals ("LocalName", String.Empty, reader.LocalName);\r
- Assertion.AssertEquals ("NodeType", XmlNodeType.None, reader.NodeType);\r
- Assertion.AssertEquals ("ReadState", ReadState.Initial, reader.ReadState);\r
+ AssertEquals ("Depth", 0, reader.Depth);\r
+ AssertEquals ("EOF", false, reader.EOF);\r
+ AssertEquals ("HasValue", false, reader.HasValue);\r
+ AssertEquals ("IsEmptyElement", false, reader.IsEmptyElement);\r
+ AssertEquals ("LocalName", String.Empty, reader.LocalName);\r
+ AssertEquals ("NodeType", XmlNodeType.None, reader.NodeType);\r
+ AssertEquals ("ReadState", ReadState.Initial, reader.ReadState);\r
}\r
\r
[Test]\r
public void Read (XmlReader reader)\r
{\r
reader.Read ();\r
- Assertion.AssertEquals ("<root>.NodeType", XmlNodeType.Element, reader.NodeType);\r
- Assertion.AssertEquals ("<root>.Name", "root", reader.Name);\r
- Assertion.AssertEquals ("<root>.ReadState", ReadState.Interactive, reader.ReadState);\r
- Assertion.AssertEquals ("<root>.Depth", 0, reader.Depth);\r
+ AssertEquals ("<root>.NodeType", XmlNodeType.Element, reader.NodeType);\r
+ AssertEquals ("<root>.Name", "root", reader.Name);\r
+ AssertEquals ("<root>.ReadState", ReadState.Interactive, reader.ReadState);\r
+ AssertEquals ("<root>.Depth", 0, reader.Depth);\r
\r
// move to 'child'\r
reader.Read ();\r
- Assertion.AssertEquals ("<child/>.Depth", 1, reader.Depth);\r
- Assertion.AssertEquals ("<child/>.NodeType", XmlNodeType.Element, reader.NodeType);\r
- Assertion.AssertEquals ("<child/>.Name", "child", reader.Name);\r
+ AssertEquals ("<child/>.Depth", 1, reader.Depth);\r
+ AssertEquals ("<child/>.NodeType", XmlNodeType.Element, reader.NodeType);\r
+ AssertEquals ("<child/>.Name", "child", reader.Name);\r
\r
reader.Read ();\r
- Assertion.AssertEquals ("</root>.Depth", 0, reader.Depth);\r
- Assertion.AssertEquals ("</root>.NodeType", XmlNodeType.EndElement, reader.NodeType);\r
- Assertion.AssertEquals ("</root>.Name", "root", reader.Name);\r
+ AssertEquals ("</root>.Depth", 0, reader.Depth);\r
+ AssertEquals ("</root>.NodeType", XmlNodeType.EndElement, reader.NodeType);\r
+ AssertEquals ("</root>.Name", "root", reader.Name);\r
\r
reader.Read ();\r
- Assertion.AssertEquals ("end.EOF", true, reader.EOF);\r
- Assertion.AssertEquals ("end.NodeType", XmlNodeType.None, reader.NodeType);\r
+ AssertEquals ("end.EOF", true, reader.EOF);\r
+ AssertEquals ("end.NodeType", XmlNodeType.None, reader.NodeType);\r
+ }\r
+\r
+ [Test]\r
+ [Category ("NotDotNet")]\r
+ public void ReadAttributeValue ()\r
+ {\r
+ RunTest ("<root attr=''/>", new TestMethod (ReadAttributeValue));\r
+ }\r
+\r
+ public void ReadAttributeValue (XmlReader reader)\r
+ {\r
+ reader.Read (); // root\r
+ Assert (reader.MoveToFirstAttribute ());\r
+ // It looks like that MS.NET shows AttributeCount and\r
+ // HasAttributes as the same as element node!\r
+ this.AssertNodeValues ("#1",\r
+ reader, XmlNodeType.Attribute,\r
+ 1, false, "attr", "", "attr", "", "", true, 1, true);\r
+ Assert (reader.ReadAttributeValue ());\r
+ // MS.NET XmlTextReader fails. Its Prefix returns \r
+ // null instead of "". It is fixed in MS.NET 2.0.\r
+ this.AssertNodeValues ("#2",\r
+ reader, XmlNodeType.Text,\r
+ 2, false, "", "", "", "", "", true, 1, true);\r
+ Assert (reader.MoveToElement ());\r
+ this.AssertNodeValues ("#3",\r
+ reader, XmlNodeType.Element,\r
+ 0, true, "root", "", "root", "", "", false, 1, true);\r
}\r
\r
[Test]\r
public void ReadEmptyElement (XmlReader reader)\r
{\r
reader.Read (); // root\r
- Assertion.AssertEquals (false, reader.IsEmptyElement);\r
+ AssertEquals (false, reader.IsEmptyElement);\r
reader.Read (); // foo\r
- Assertion.AssertEquals ("foo", reader.Name);\r
- Assertion.AssertEquals (true, reader.IsEmptyElement);\r
+ AssertEquals ("foo", reader.Name);\r
+ AssertEquals (true, reader.IsEmptyElement);\r
reader.Read (); // bar\r
- Assertion.AssertEquals ("bar", reader.Name);\r
- Assertion.AssertEquals (false, reader.IsEmptyElement);\r
+ AssertEquals ("bar", reader.Name);\r
+ AssertEquals (false, reader.IsEmptyElement);\r
}\r
\r
[Test]\r
\r
reader.Read ();\r
string s = reader.ReadString ();\r
- Assertion.AssertEquals ("readString.1.ret_val", " test of ", s);\r
- Assertion.AssertEquals ("readString.1.Name", "b", reader.Name);\r
+ AssertEquals ("readString.1.ret_val", " test of ", s);\r
+ AssertEquals ("readString.1.Name", "b", reader.Name);\r
s = reader.ReadString ();\r
- Assertion.AssertEquals ("readString.2.ret_val", "mixed", s);\r
- Assertion.AssertEquals ("readString.2.NodeType", XmlNodeType.EndElement, reader.NodeType);\r
+ AssertEquals ("readString.2.ret_val", "mixed", s);\r
+ AssertEquals ("readString.2.NodeType", XmlNodeType.EndElement, reader.NodeType);\r
s = reader.ReadString (); // never proceeds.\r
- Assertion.AssertEquals ("readString.3.ret_val", String.Empty, s);\r
- Assertion.AssertEquals ("readString.3.NodeType", XmlNodeType.EndElement, reader.NodeType);\r
+ AssertEquals ("readString.3.ret_val", String.Empty, s);\r
+ AssertEquals ("readString.3.NodeType", XmlNodeType.EndElement, reader.NodeType);\r
reader.Read ();\r
- Assertion.AssertEquals ("readString.4.NodeType", XmlNodeType.Text, reader.NodeType);\r
- Assertion.AssertEquals ("readString.4.Value", " string.", reader.Value);\r
+ AssertEquals ("readString.4.NodeType", XmlNodeType.Text, reader.NodeType);\r
+ AssertEquals ("readString.4.Value", " string.", reader.Value);\r
s = reader.ReadString (); // reads the same Text node.\r
- Assertion.AssertEquals ("readString.5.ret_val", " string. cdata string.", s);\r
- Assertion.AssertEquals ("readString.5.NodeType", XmlNodeType.EndElement, reader.NodeType);\r
+ AssertEquals ("readString.5.ret_val", " string. cdata string.", s);\r
+ AssertEquals ("readString.5.NodeType", XmlNodeType.EndElement, reader.NodeType);\r
}\r
\r
[Test]\r
{\r
reader.Read ();\r
reader.Read ();\r
- Assertion.AssertEquals ("initial.ReadState", ReadState.Interactive, reader.ReadState);\r
- Assertion.AssertEquals ("initial.EOF", false, reader.EOF);\r
- Assertion.AssertEquals ("initial.NodeType", XmlNodeType.Element, reader.NodeType);\r
+ AssertEquals ("initial.ReadState", ReadState.Interactive, reader.ReadState);\r
+ AssertEquals ("initial.EOF", false, reader.EOF);\r
+ AssertEquals ("initial.NodeType", XmlNodeType.Element, reader.NodeType);\r
string s = reader.ReadInnerXml ();\r
- Assertion.AssertEquals ("read_all", "test of <b>mixed</b> string.", s);\r
- Assertion.AssertEquals ("after.Name", "bar", reader.Name);\r
- Assertion.AssertEquals ("after.NodeType", XmlNodeType.Element, reader.NodeType);\r
+ AssertEquals ("read_all", "test of <b>mixed</b> string.", s);\r
+ AssertEquals ("after.Name", "bar", reader.Name);\r
+ AssertEquals ("after.NodeType", XmlNodeType.Element, reader.NodeType);\r
}\r
\r
\r
}\r
\r
[Test]\r
- public void EmptyElementWithTwoAttributes ()\r
+ public void EmptyElementWithAttributes ()\r
{\r
- string xml = @"<foo bar=""baz"" quux='quuux'/>";\r
- RunTest (xml, new TestMethod (EmptyElementWithTwoAttributes ));\r
+ string xml = @"<foo bar=""baz"" quux='quuux' x:foo='x-foo' xmlns:x = 'urn:xfoo' />";\r
+ RunTest (xml, new TestMethod (EmptyElementWithAttributes ));\r
}\r
\r
- public void EmptyElementWithTwoAttributes (XmlReader xmlReader)\r
+ public void EmptyElementWithAttributes (XmlReader xmlReader)\r
{\r
\r
AssertStartDocument (xmlReader);\r
"foo", // localName\r
String.Empty, // namespaceURI\r
String.Empty, // value\r
- 2 // attributeCount\r
+ 4 // attributeCount\r
);\r
\r
AssertAttribute (\r
"quuux" // value\r
);\r
\r
+ AssertAttribute (\r
+ xmlReader, // xmlReader\r
+ "notexist", // name\r
+ String.Empty, // prefix\r
+ "notexist", // localName\r
+ String.Empty, // namespaceURI\r
+ null // value\r
+ );\r
+\r
+ AssertAttribute (\r
+ xmlReader, // xmlReader\r
+ "x:foo", // name\r
+ "x", // prefix\r
+ "foo", // localName\r
+ "urn:xfoo", // namespaceURI\r
+ "x-foo" // value\r
+ );\r
+\r
+ AssertAttribute (\r
+ xmlReader, // xmlReader\r
+ "x:bar", // name\r
+ "x", // prefix\r
+ "bar", // localName\r
+ "urn:xfoo", // namespaceURI\r
+ null // value\r
+ );\r
+\r
AssertEndDocument (xmlReader);\r
}\r
\r
AssertEndDocument (xmlReader);\r
}\r
\r
- [Test]\r
- public void EntityReference ()\r
- {\r
- string xml = "<foo>&bar;</foo>";\r
- RunTest (xml, new TestMethod (EntityReference));\r
- }\r
-\r
- public void EntityReference (XmlReader xmlReader)\r
- {\r
- AssertStartDocument (xmlReader);\r
-\r
- AssertNode (\r
- xmlReader, // xmlReader\r
- XmlNodeType.Element, // nodeType\r
- 0, //depth\r
- false, // isEmptyElement\r
- "foo", // name\r
- String.Empty, // prefix\r
- "foo", // localName\r
- String.Empty, // namespaceURI\r
- String.Empty, // value\r
- 0 // attributeCount\r
- );\r
-\r
- AssertNode (\r
- xmlReader, // xmlReader\r
- XmlNodeType.EntityReference, // nodeType\r
- 1, //depth\r
- false, // isEmptyElement\r
- "bar", // name\r
- String.Empty, // prefix\r
- "bar", // localName\r
- String.Empty, // namespaceURI\r
- String.Empty, // value\r
- 0 // attributeCount\r
- );\r
-\r
- AssertNode (\r
- xmlReader, // xmlReader\r
- XmlNodeType.EndElement, // nodeType\r
- 0, //depth\r
- false, // isEmptyElement\r
- "foo", // name\r
- String.Empty, // prefix\r
- "foo", // localName\r
- String.Empty, // namespaceURI\r
- String.Empty, // value\r
- 0 // attributeCount\r
- );\r
-\r
- AssertEndDocument (xmlReader);\r
- }\r
-\r
- [Test]\r
- public void EntityReferenceInsideText ()\r
- {\r
- string xml = "<foo>bar&baz;quux</foo>";\r
- RunTest (xml, new TestMethod (EntityReferenceInsideText));\r
- }\r
-\r
- public void EntityReferenceInsideText (XmlReader xmlReader)\r
- {\r
- AssertStartDocument (xmlReader);\r
-\r
- AssertNode (\r
- xmlReader, // xmlReader\r
- XmlNodeType.Element, // nodeType\r
- 0, //depth\r
- false, // isEmptyElement\r
- "foo", // name\r
- String.Empty, // prefix\r
- "foo", // localName\r
- String.Empty, // namespaceURI\r
- String.Empty, // value\r
- 0 // attributeCount\r
- );\r
-\r
- AssertNode (\r
- xmlReader, // xmlReader\r
- XmlNodeType.Text, // nodeType\r
- 1, //depth\r
- false, // isEmptyElement\r
- String.Empty, // name\r
- String.Empty, // prefix\r
- String.Empty, // localName\r
- String.Empty, // namespaceURI\r
- "bar", // value\r
- 0 // attributeCount\r
- );\r
-\r
- AssertNode (\r
- xmlReader, // xmlReader\r
- XmlNodeType.EntityReference, // nodeType\r
- 1, //depth\r
- false, // isEmptyElement\r
- "baz", // name\r
- String.Empty, // prefix\r
- "baz", // localName\r
- String.Empty, // namespaceURI\r
- String.Empty, // value\r
- 0 // attributeCount\r
- );\r
-\r
- AssertNode (\r
- xmlReader, // xmlReader\r
- XmlNodeType.Text, // nodeType\r
- 1, //depth\r
- false, // isEmptyElement\r
- String.Empty, // name\r
- String.Empty, // prefix\r
- String.Empty, // localName\r
- String.Empty, // namespaceURI\r
- "quux", // value\r
- 0 // attributeCount\r
- );\r
-\r
- AssertNode (\r
- xmlReader, // xmlReader\r
- XmlNodeType.EndElement, // nodeType\r
- 0, //depth\r
- false, // isEmptyElement\r
- "foo", // name\r
- String.Empty, // prefix\r
- "foo", // localName\r
- String.Empty, // namespaceURI\r
- String.Empty, // value\r
- 0 // attributeCount\r
- );\r
-\r
- AssertEndDocument (xmlReader);\r
- }\r
-\r
[Test]\r
public void CharacterReferences ()\r
{\r
"http://foo/" // value\r
);\r
\r
- Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace (String.Empty));\r
+ AssertEquals ("http://foo/", xmlReader.LookupNamespace (String.Empty));\r
\r
AssertEndDocument (xmlReader);\r
}\r
"http://foo/" // value\r
);\r
\r
- Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
+ AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
\r
AssertNode (\r
xmlReader, // xmlReader\r
"http://baz/" // value\r
);\r
\r
- Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
- Assertion.AssertEquals ("http://baz/", xmlReader.LookupNamespace ("baz"));\r
+ AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
+ AssertEquals ("http://baz/", xmlReader.LookupNamespace ("baz"));\r
\r
AssertNode (\r
xmlReader, // xmlReader\r
0 // attributeCount\r
);\r
\r
- Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
- Assertion.AssertNull (xmlReader.LookupNamespace ("baz"));\r
+ AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
+ AssertNull (xmlReader.LookupNamespace ("baz"));\r
\r
AssertEndDocument (xmlReader);\r
}\r
"http://foo/" // value\r
);\r
\r
- Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
+ AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
\r
AssertNode (\r
xmlReader, // xmlReader\r
"http://baz/" // value\r
);\r
\r
- Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
- Assertion.AssertEquals ("http://baz/", xmlReader.LookupNamespace (String.Empty));\r
+ AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
+ AssertEquals ("http://baz/", xmlReader.LookupNamespace (String.Empty));\r
\r
AssertNode (\r
xmlReader, // xmlReader\r
0 // attributeCount\r
);\r
\r
- Assertion.AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
+ AssertEquals ("http://foo/", xmlReader.LookupNamespace ("foo"));\r
\r
AssertEndDocument (xmlReader);\r
}\r
"http://bar/" // value\r
);\r
\r
- Assertion.AssertEquals ("http://bar/", xmlReader.LookupNamespace ("bar"));\r
+ AssertEquals ("http://bar/", xmlReader.LookupNamespace ("bar"));\r
\r
AssertEndDocument (xmlReader);\r
}\r
\r
public void MoveToElementFromAttribute (XmlReader xmlReader)\r
{\r
- Assertion.Assert (xmlReader.Read ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
- Assertion.Assert (xmlReader.MoveToFirstAttribute ());\r
- Assertion.AssertEquals (XmlNodeType.Attribute, xmlReader.NodeType);\r
- Assertion.Assert (xmlReader.MoveToElement ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (xmlReader.Read ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (xmlReader.MoveToFirstAttribute ());\r
+ AssertEquals (XmlNodeType.Attribute, xmlReader.NodeType);\r
+ Assert (xmlReader.MoveToElement ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
}\r
\r
[Test]\r
\r
public void MoveToElementFromElement (XmlReader xmlReader)\r
{\r
- Assertion.Assert (xmlReader.Read ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
- Assertion.Assert (!xmlReader.MoveToElement ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (xmlReader.Read ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (!xmlReader.MoveToElement ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
}\r
\r
[Test]\r
\r
public void MoveToFirstAttributeWithNoAttributes (XmlReader xmlReader)\r
{\r
- Assertion.Assert (xmlReader.Read ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
- Assertion.Assert (!xmlReader.MoveToFirstAttribute ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (xmlReader.Read ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (!xmlReader.MoveToFirstAttribute ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
}\r
\r
[Test]\r
\r
public void MoveToNextAttributeWithNoAttributes (XmlReader xmlReader)\r
{\r
- Assertion.Assert (xmlReader.Read ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
- Assertion.Assert (!xmlReader.MoveToNextAttribute ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (xmlReader.Read ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (!xmlReader.MoveToNextAttribute ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
}\r
\r
[Test]\r
"quuux" // value\r
);\r
\r
- Assertion.Assert (xmlReader.MoveToNextAttribute ());\r
- Assertion.Assert ("bar" == xmlReader.Name || "quux" == xmlReader.Name);\r
- Assertion.Assert ("baz" == xmlReader.Value || "quuux" == xmlReader.Value);\r
+ Assert (xmlReader.MoveToNextAttribute ());\r
+ AssertEquals ("bar", xmlReader.Name);\r
+ AssertEquals ("baz", xmlReader.Value);\r
\r
- Assertion.Assert (xmlReader.MoveToNextAttribute ());\r
- Assertion.Assert ("bar" == xmlReader.Name || "quux" == xmlReader.Name);\r
- Assertion.Assert ("baz" == xmlReader.Value || "quuux" == xmlReader.Value);\r
+ Assert (xmlReader.MoveToNextAttribute ());\r
+ AssertEquals ("quux", xmlReader.Name);\r
+ AssertEquals ("quuux", xmlReader.Value);\r
\r
- Assertion.Assert (!xmlReader.MoveToNextAttribute ());\r
+ Assert (!xmlReader.MoveToNextAttribute ());\r
\r
- Assertion.Assert (xmlReader.MoveToElement ());\r
+ Assert (xmlReader.MoveToElement ());\r
\r
AssertNodeValues (\r
+ "#1",\r
xmlReader, // xmlReader\r
XmlNodeType.Element, // nodeType\r
0, //depth\r
AssertEndDocument (xmlReader);\r
}\r
\r
+ [Test]\r
+// [Category ("NotDotNet")] // MS XmlNodeReader never moves to xml declaration.\r
+ [Ignore ("Too inconsistent reference implementations to determine which is correct behavior.")]\r
+ public void MoveToXmlDeclAttributes ()\r
+ {\r
+ string xml = "<?xml version=\"1.0\" standalone=\"yes\"?><root/>";\r
+ RunTest (xml, new TestMethod (MoveToXmlDeclAttributes));\r
+ }\r
+\r
+ public void MoveToXmlDeclAttributes (XmlReader xmlReader)\r
+ {\r
+ xmlReader.Read ();\r
+ this.AssertNodeValues ("#1", xmlReader, \r
+ XmlNodeType.XmlDeclaration,\r
+ 0,\r
+ false,\r
+ "xml",\r
+ String.Empty,\r
+ "xml",\r
+ String.Empty,\r
+ "version=\"1.0\" standalone=\"yes\"",\r
+ 2);\r
+ Assert ("MoveToFirstAttribute",\r
+ xmlReader.MoveToFirstAttribute ());\r
+ this.AssertNodeValues ("#2", xmlReader, \r
+ XmlNodeType.Attribute,\r
+ 0, // FIXME: might be 1\r
+ false,\r
+ "version",\r
+ String.Empty,\r
+ "version",\r
+ String.Empty,\r
+ "1.0",\r
+ 2);\r
+ xmlReader.ReadAttributeValue ();\r
+ this.AssertNodeValues ("#3", xmlReader, \r
+ XmlNodeType.Text,\r
+ 1, // FIXME might be 2\r
+ false,\r
+ String.Empty,\r
+ null, // FIXME: should be String.Empty,\r
+ String.Empty,\r
+ null, // FIXME: should be String.Empty,\r
+ "1.0",\r
+ 2);\r
+ xmlReader.MoveToNextAttribute ();\r
+ this.AssertNodeValues ("#4", xmlReader, \r
+ XmlNodeType.Attribute,\r
+ 0, // FIXME: might be 1\r
+ false,\r
+ "standalone",\r
+ String.Empty,\r
+ "standalone",\r
+ String.Empty,\r
+ "yes",\r
+ 2);\r
+ xmlReader.ReadAttributeValue ();\r
+ this.AssertNodeValues ("#5", xmlReader, \r
+ XmlNodeType.Text,\r
+ 1, // FIXME: might be 2\r
+ false,\r
+ String.Empty,\r
+ null, // FIXME: should be String.Empty,\r
+ String.Empty,\r
+ null, // FIXME: should be String.Empty,\r
+ "yes",\r
+ 2);\r
+ }\r
+\r
[Test]\r
public void AttributeOrder ()\r
{\r
\r
public void AttributeOrder (XmlReader xmlReader)\r
{\r
- Assertion.Assert (xmlReader.Read ());\r
- Assertion.AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ Assert (xmlReader.Read ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
\r
- Assertion.Assert (xmlReader.MoveToFirstAttribute ());\r
- Assertion.AssertEquals ("_1", xmlReader.Name);\r
- Assertion.Assert (xmlReader.MoveToNextAttribute ());\r
- Assertion.AssertEquals ("_2", xmlReader.Name);\r
- Assertion.Assert (xmlReader.MoveToNextAttribute ());\r
- Assertion.AssertEquals ("_3", xmlReader.Name);\r
+ Assert (xmlReader.MoveToFirstAttribute ());\r
+ AssertEquals ("_1", xmlReader.Name);\r
+ Assert (xmlReader.MoveToNextAttribute ());\r
+ AssertEquals ("_2", xmlReader.Name);\r
+ Assert (xmlReader.MoveToNextAttribute ());\r
+ AssertEquals ("_3", xmlReader.Name);\r
\r
- Assertion.Assert (!xmlReader.MoveToNextAttribute ());\r
+ Assert (!xmlReader.MoveToNextAttribute ());\r
}\r
\r
+ [Test]\r
+ [Category ("NotDotNet")]\r
+ public void IndexerAndAttributes ()\r
+ {\r
+ string xml = @"<?xml version='1.0' standalone='no'?><foo _1='1' _2='2' _3='3' />";\r
+ RunTest (xml, new TestMethod (IndexerAndAttributes));\r
+ }\r
+\r
+ public void IndexerAndAttributes (XmlReader xmlReader)\r
+ {\r
+ Assert (xmlReader.Read ());\r
+ AssertEquals ("1.0", xmlReader ["version"]);\r
+ AssertEquals ("1.0", xmlReader.GetAttribute ("version"));\r
+ // .NET 1.1 BUG. XmlTextReader returns null, while XmlNodeReader returns "".\r
+ AssertEquals (null, xmlReader ["encoding"]);\r
+ AssertEquals (null, xmlReader.GetAttribute ("encoding"));\r
+ AssertEquals ("no", xmlReader ["standalone"]);\r
+ AssertEquals ("no", xmlReader.GetAttribute ("standalone"));\r
+ AssertEquals ("1.0", xmlReader [0]);\r
+ AssertEquals ("1.0", xmlReader.GetAttribute (0));\r
+ AssertEquals ("no", xmlReader [1]);\r
+ AssertEquals ("no", xmlReader.GetAttribute (1));\r
+\r
+ Assert (xmlReader.Read ());\r
+ AssertEquals (XmlNodeType.Element, xmlReader.NodeType);\r
+ AssertEquals ("1", xmlReader ["_1"]);\r
+\r
+ Assert (xmlReader.MoveToFirstAttribute ());\r
+ AssertEquals ("_1", xmlReader.Name);\r
+ AssertEquals ("1", xmlReader ["_1"]);\r
+ Assert (xmlReader.MoveToNextAttribute ());\r
+ AssertEquals ("_2", xmlReader.Name);\r
+ AssertEquals ("1", xmlReader ["_1"]);\r
+ Assert (xmlReader.MoveToNextAttribute ());\r
+ AssertEquals ("_3", xmlReader.Name);\r
+ AssertEquals ("1", xmlReader ["_1"]);\r
+\r
+ Assert (!xmlReader.MoveToNextAttribute ());\r
+ }\r
+\r
+ [Test]\r
+ public void ProhibitedMultipleAttributes ()\r
+ {\r
+ string xml = @"<foo _1='1' _1='1' />";\r
+ try {\r
+ RunTest (xml, new TestMethod (ReadAll));\r
+ } catch (XmlException) {\r
+ }\r
+ xml = @"<foo _1='1' _1='2' />";\r
+ try {\r
+ RunTest (xml, new TestMethod (ReadAll));\r
+ } catch (XmlException) {\r
+ }\r
+ }\r
+\r
+ public void ReadAll (XmlReader xmlReader)\r
+ {\r
+ while (!xmlReader.EOF)\r
+ xmlReader.Read ();\r
+ }\r
+\r
+ [Test]\r
+ public void SurrogatePairContent ()\r
+ {\r
+ string xml = "<root xmlns='𐄀'/>";\r
+ RunTest (xml, new TestMethod (SurrogatePairContent));\r
+ }\r
+\r
+ public void SurrogatePairContent (XmlReader xmlReader)\r
+ {\r
+ xmlReader.Read ();\r
+ AssertEquals (true, xmlReader.MoveToAttribute ("xmlns"));\r
+ AssertEquals ("xmlns", xmlReader.Name);\r
+ AssertEquals (2, xmlReader.Value.Length);\r
+ AssertEquals (0xD800, (int) xmlReader.Value [0]);\r
+ AssertEquals (0xDD00, (int) xmlReader.Value [1]);\r
+ }\r
+\r
+ [Test]\r
+ public void ReadOuterXmlOnEndElement ()\r
+ {\r
+ string xml = "<root><foo></foo></root>";\r
+ RunTest (xml, new TestMethod (ReadOuterXmlOnEndElement));\r
+ }\r
+\r
+ public void ReadOuterXmlOnEndElement (XmlReader xmlReader)\r
+ {\r
+ xmlReader.Read ();\r
+ xmlReader.Read ();\r
+ xmlReader.Read ();\r
+ AssertEquals (String.Empty, xmlReader.ReadOuterXml ());\r
+ }\r
+\r
+ [Test]\r
+ public void ReadInnerXmlOnEndElement ()\r
+ {\r
+ string xml = "<root><foo></foo></root>";\r
+ RunTest (xml, new TestMethod (ReadInnerXmlOnEndElement));\r
+ }\r
+\r
+ private void ReadInnerXmlOnEndElement (XmlReader xmlReader)\r
+ {\r
+ xmlReader.Read ();\r
+ xmlReader.Read ();\r
+ xmlReader.Read ();\r
+ AssertEquals (String.Empty, xmlReader.ReadInnerXml ());\r
+ }\r
}\r
}\r