public void ReadXmlSchema_ByXmlReader()
{
DataSet ds1 = new DataSet();
ds1.Tables.Add(DataProvider.CreateParentDataTable());
ds1.Tables.Add(DataProvider.CreateChildDataTable());
StringWriter sw = new StringWriter();
XmlTextWriter xmlTW = new XmlTextWriter(sw);
//write xml file, schema only
ds1.WriteXmlSchema(xmlTW);
xmlTW.Flush();
StringReader sr = new StringReader(sw.ToString());
XmlTextReader xmlTR = new XmlTextReader(sr);
//copy both data and schema
DataSet ds2 = new DataSet();
ds2.ReadXmlSchema(xmlTR);
//check xml schema
// ReadXmlSchema - Tables count
Assert.Equal(ds2.Tables.Count, ds1.Tables.Count);
// ReadXmlSchema - Tables 0 Col count
Assert.Equal(ds1.Tables[0].Columns.Count, ds2.Tables[0].Columns.Count);
// ReadXmlSchema - Tables 1 Col count
Assert.Equal(ds1.Tables[1].Columns.Count, ds2.Tables[1].Columns.Count);
//check some colummns types
// ReadXmlSchema - Tables 0 Col type
Assert.Equal(ds1.Tables[0].Columns[0].GetType(), ds2.Tables[0].Columns[0].GetType());
// ReadXmlSchema - Tables 1 Col type
Assert.Equal(ds1.Tables[1].Columns[3].GetType(), ds2.Tables[1].Columns[3].GetType());
//check that no data exists
// ReadXmlSchema - Table 1 row count
Assert.Equal(0, ds2.Tables[0].Rows.Count);
// ReadXmlSchema - Table 2 row count
Assert.Equal(0, ds2.Tables[1].Rows.Count);
}