public void XmlTest10()
{
MakeDummyTable();
using (FileStream stream = new FileStream(_tempFile, FileMode.Create))
{
_dummyTable.WriteXml(stream, XmlWriteMode.DiffGram);
}
using (FileStream stream = new FileStream(_tempFile, FileMode.Open))
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
XmlReader reader = XmlReader.Create(stream, settings);
reader.Read();
Assert.Equal(true, reader.IsStartElement());
Assert.Equal(0, reader.Depth);
Assert.Equal(true, reader.HasAttributes);
Assert.Equal(false, reader.HasValue);
Assert.Equal(false, reader.IsDefault);
Assert.Equal(false, reader.IsEmptyElement);
Assert.Equal("diffgr:diffgram", reader.Name);
Assert.Equal("diffgram", reader.LocalName);
Assert.Equal(2, reader.AttributeCount);
Assert.Equal("urn:schemas-microsoft-com:xml-msdata", reader[0]);
Assert.Equal("urn:schemas-microsoft-com:xml-diffgram-v1", reader[1]);
Assert.Equal("urn:schemas-microsoft-com:xml-diffgram-v1", reader.NamespaceURI);
Assert.Equal(XmlNodeType.Element, reader.NodeType);
reader.Read();
Assert.Equal(true, reader.IsStartElement());
Assert.Equal(1, reader.Depth);
Assert.Equal(false, reader.HasAttributes);
Assert.Equal(false, reader.HasValue);
Assert.Equal(false, reader.IsDefault);
Assert.Equal(false, reader.IsEmptyElement);
Assert.Equal("NewDataSet", reader.Name);
Assert.Equal("NewDataSet", reader.LocalName);
Assert.Equal(XmlNodeType.Element, reader.NodeType);
reader.Read();
Assert.Equal(true, reader.IsStartElement());
Assert.Equal(2, reader.Depth);
Assert.Equal(true, reader.HasAttributes);
Assert.Equal(false, reader.HasValue);
Assert.Equal(false, reader.IsDefault);
Assert.Equal(false, reader.IsEmptyElement);
Assert.Equal("DummyTable", reader.Name);
Assert.Equal("DummyTable", reader.LocalName);
Assert.Equal(2, reader.AttributeCount);
Assert.Equal("DummyTable1", reader[0]);
Assert.Equal("0", reader[1]);
Assert.Equal(XmlNodeType.Element, reader.NodeType);
reader.Read();
VerifyDiffGramElement1(reader);
reader.Read();
Assert.Equal(XmlNodeType.Text, reader.NodeType);
Assert.Equal(true, reader.HasValue);
Assert.Equal("1", reader.Value);
reader.Read();
VerifyDiffGramElement3(reader);
reader.Read();
VerifyDiffGramElement2(reader);
reader.Read();
Assert.Equal(XmlNodeType.Text, reader.NodeType);
Assert.Equal(true, reader.HasValue);
Assert.Equal("DummyItem 1", reader.Value);
reader.Read();
Assert.Equal(false, reader.IsStartElement());
Assert.Equal("DummyItem", reader.Name);
Assert.Equal("DummyItem", reader.LocalName);
Assert.Equal(XmlNodeType.EndElement, reader.NodeType);
reader.Read();
Assert.Equal(false, reader.IsStartElement());
Assert.Equal("DummyTable", reader.Name);
Assert.Equal("DummyTable", reader.LocalName);
Assert.Equal(XmlNodeType.EndElement, reader.NodeType);
reader.Read();
Assert.Equal(true, reader.IsStartElement());
Assert.Equal(2, reader.Depth);
Assert.Equal(true, reader.HasAttributes);
Assert.Equal(false, reader.HasValue);
Assert.Equal(false, reader.IsDefault);
Assert.Equal(false, reader.IsEmptyElement);
Assert.Equal("DummyTable", reader.Name);
Assert.Equal("DummyTable", reader.LocalName);
Assert.Equal(3, reader.AttributeCount);
Assert.Equal("DummyTable2", reader[0]);
Assert.Equal("1", reader[1]);
Assert.Equal("modified", reader[2]);
Assert.Equal(XmlNodeType.Element, reader.NodeType);
reader.Read();
VerifyDiffGramElement1(reader);
reader.Read();
Assert.Equal(XmlNodeType.Text, reader.NodeType);
Assert.Equal(true, reader.HasValue);
Assert.Equal("2", reader.Value);
reader.Read();
VerifyDiffGramElement3(reader);
reader.Read();
VerifyDiffGramElement2(reader);
reader.Read();
Assert.Equal(XmlNodeType.Text, reader.NodeType);
Assert.Equal(true, reader.HasValue);
Assert.Equal("Changed_DummyItem 2", reader.Value);
reader.Read();
VerifyDiffGramElement4(reader);
reader.Read();
VerifyDiffGramElement5(reader);
reader.Read();
Assert.Equal(true, reader.IsStartElement());
Assert.Equal(2, reader.Depth);
Assert.Equal(true, reader.HasAttributes);
Assert.Equal(false, reader.HasValue);
Assert.Equal(false, reader.IsDefault);
Assert.Equal(false, reader.IsEmptyElement);
Assert.Equal("DummyTable", reader.Name);
Assert.Equal("DummyTable", reader.LocalName);
Assert.Equal(2, reader.AttributeCount);
Assert.Equal("DummyTable3", reader[0]);
Assert.Equal("2", reader[1]);
Assert.Equal(XmlNodeType.Element, reader.NodeType);
reader.Read();
VerifyDiffGramElement1(reader);
reader.Read();
Assert.Equal(XmlNodeType.Text, reader.NodeType);
Assert.Equal(true, reader.HasValue);
Assert.Equal("3", reader.Value);
reader.Read();
VerifyDiffGramElement3(reader);
reader.Read();
VerifyDiffGramElement2(reader);
reader.Read();
Assert.Equal(XmlNodeType.Text, reader.NodeType);
Assert.Equal(true, reader.HasValue);
Assert.Equal("DummyItem 3", reader.Value);
reader.Read();
VerifyDiffGramElement4(reader);
reader.Read();
VerifyDiffGramElement5(reader);
reader.Read();
Assert.Equal(false, reader.IsStartElement());
Assert.Equal("NewDataSet", reader.Name);
Assert.Equal("NewDataSet", reader.LocalName);
Assert.Equal(XmlNodeType.EndElement, reader.NodeType);
reader.Read();
Assert.Equal(true, reader.IsStartElement());
Assert.Equal(1, reader.Depth);
Assert.Equal(false, reader.HasAttributes);
Assert.Equal(false, reader.HasValue);
Assert.Equal(false, reader.IsDefault);
Assert.Equal(false, reader.IsEmptyElement);
Assert.Equal("diffgr:before", reader.Name);
Assert.Equal("before", reader.LocalName);
Assert.Equal(XmlNodeType.Element, reader.NodeType);
reader.Read();
Assert.Equal(true, reader.IsStartElement());
Assert.Equal(2, reader.Depth);
Assert.Equal(true, reader.HasAttributes);
Assert.Equal(false, reader.HasValue);
Assert.Equal(false, reader.IsDefault);
Assert.Equal(false, reader.IsEmptyElement);
Assert.Equal("DummyTable", reader.Name);
Assert.Equal("DummyTable", reader.LocalName);
Assert.Equal(2, reader.AttributeCount);
Assert.Equal("DummyTable2", reader[0]);
Assert.Equal("1", reader[1]);
Assert.Equal(XmlNodeType.Element, reader.NodeType);
reader.Read();
VerifyDiffGramElement1(reader);
reader.Read();
Assert.Equal(XmlNodeType.Text, reader.NodeType);
Assert.Equal(true, reader.HasValue);
Assert.Equal("2", reader.Value);
reader.Read();
VerifyDiffGramElement3(reader);
reader.Read();
VerifyDiffGramElement2(reader);
reader.Read();
Assert.Equal(XmlNodeType.Text, reader.NodeType);
Assert.Equal(true, reader.HasValue);
Assert.Equal("DummyItem 2", reader.Value);
reader.Read();
VerifyDiffGramElement4(reader);
reader.Read();
VerifyDiffGramElement5(reader);
reader.Read();
Assert.Equal(false, reader.IsStartElement());
Assert.Equal("diffgr:before", reader.Name);
Assert.Equal("before", reader.LocalName);
Assert.Equal(XmlNodeType.EndElement, reader.NodeType);
reader.Read();
Assert.Equal(false, reader.IsStartElement());
Assert.Equal("diffgr:diffgram", reader.Name);
Assert.Equal("diffgram", reader.LocalName);
Assert.Equal(XmlNodeType.EndElement, reader.NodeType);
}
}