protected void Read_XmlDocument (XamlReader r)
{
for (int i = 0; i < 3; i++) {
r.Read ();
Assert.AreEqual (XamlNodeType.NamespaceDeclaration, r.NodeType, "#1-" + i);
}
r.Read ();
Assert.AreEqual (new XamlType (typeof (XmlDocument), r.SchemaContext), r.Type, "#2");
r.Read ();
var l = new List<XamlMember> ();
while (r.NodeType == XamlNodeType.StartMember) {
// It depends on XmlDocument's implenentation details. It fails on mono only because XmlDocument.SchemaInfo overrides both getter and setter.
//for (int i = 0; i < 5; i++) {
// Assert.AreEqual (XamlNodeType.StartMember, r.NodeType, "#3-" + i);
l.Add (r.Member);
r.Skip ();
}
Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Value"), "#4-1");
Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "InnerXml"), "#4-2");
Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Prefix"), "#4-3");
Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "PreserveWhitespace"), "#4-4");
Assert.IsNotNull (l.FirstOrDefault (m => m.Name == "Schemas"), "#4-5");
Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "#5");
Assert.IsFalse (r.Read (), "#6");
}