//
// XmlDataDocumentTestTest.cs - NUnit Test Cases for XmlDataDocument
//
// Authors:
// Ville Palo (vi64pa@koti.soon.fi)
// Martin Willemoes Hansen (mwh@sysrq.dk)
//
// (C) 2002 Ville Palo
// (C) 2003 Martin Willemoes Hansen
//
//
// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using NUnit.Framework;
using System;
using System.Data;
using System.Xml;
using System.Xml.XPath;
using System.IO;
using System.Threading;
using System.Globalization;
namespace MonoTests.System.Data.Xml
{
[TestFixture]
public class XmlDataDocumentTest : DataSetAssertion {
static string EOL = "\n";
[SetUp]
public void GetReady()
{
Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US");
}
[Test]
public void NewInstance ()
{
XmlDataDocument doc = new XmlDataDocument ();
AssertDataSet ("#1", doc.DataSet, "NewDataSet", 0, 0);
AssertEquals (false, doc.DataSet.EnforceConstraints);
XmlElement el = doc.CreateElement ("TEST");
AssertDataSet ("#2", doc.DataSet, "NewDataSet", 0, 0);
AssertNull (doc.GetRowFromElement (el));
doc.AppendChild (el);
AssertDataSet ("#3", doc.DataSet, "NewDataSet", 0, 0);
DataSet ds = new DataSet ();
doc = new XmlDataDocument (ds);
AssertEquals (true, doc.DataSet.EnforceConstraints);
}
[Test]
public void SimpleLoad ()
{
string xml001 = "";
XmlDataDocument doc = new XmlDataDocument ();
DataSet ds = new DataSet ();
ds.InferXmlSchema (new StringReader (xml001), null);
doc.LoadXml (xml001);
string xml002 = "";
doc = new XmlDataDocument ();
ds = new DataSet ();
ds.InferXmlSchema (new StringReader (xml002), null);
doc.LoadXml (xml002);
string xml003 = "test";
doc = new XmlDataDocument ();
ds = new DataSet ();
ds.InferXmlSchema (new StringReader (xml003), null);
doc.LoadXml (xml003);
string xml004 = "testtest2test3test4";
doc = new XmlDataDocument ();
ds = new DataSet ();
ds.InferXmlSchema (new StringReader (xml004), null);
doc.LoadXml (xml004);
}
[Test]
public void CloneNode ()
{
XmlDataDocument doc = new XmlDataDocument ();
doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
doc.Load ("Test/System.Xml/region.xml");
XmlDataDocument doc2 = (XmlDataDocument)doc.CloneNode (false);
AssertEquals ("#I01", 0, doc2.ChildNodes.Count);
AssertEquals ("#I02", "", doc2.DataSet.GetXmlSchema ().Substring (0, 39));
doc2 = (XmlDataDocument)doc.CloneNode (true);
AssertEquals ("#I03", 2, doc2.ChildNodes.Count);
AssertEquals ("#I04", "", doc2.DataSet.GetXmlSchema ().Substring (0, 39));
doc.DataSet.Tables [0].Rows [0][0] = "64";
AssertEquals ("#I05", "1", doc2.DataSet.Tables [0].Rows [0][0].ToString ());
}
[Test]
public void EditingXmlTree ()
{
XmlDataDocument doc = new XmlDataDocument ();
doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
doc.Load ("Test/System.Xml/region.xml");
XmlElement Element = doc.GetElementFromRow (doc.DataSet.Tables [0].Rows [1]);
Element.FirstChild.InnerText = "64";
AssertEquals ("test#01", "64", doc.DataSet.Tables [0].Rows [1] [0]);
DataSet Set = new DataSet ();
Set.ReadXml ("Test/System.Xml/region.xml");
doc = new XmlDataDocument (Set);
Element = doc.GetElementFromRow (doc.DataSet.Tables [0].Rows [1]);
AssertNotNull (Element);
try {
Element.FirstChild.InnerText = "64";
Fail ("test#02");
} catch (InvalidOperationException) {
}
AssertEquals ("test#05", "2", doc.DataSet.Tables [0].Rows [1] [0]);
Set.EnforceConstraints = false;
Element.FirstChild.InnerText = "64";
AssertEquals ("test#06", "64", doc.DataSet.Tables [0].Rows [1] [0]);
}
[Test]
public void EditingDataSet ()
{
string xml = "1Eastern\r\n 2Western\r\n 3Northern\r\n 4Southern\r\n 12Hi There12Hi There";
XmlReader Reader = new XmlTextReader ("Test/System.Xml/region.xml");
XmlDataDocument Doc = new XmlDataDocument ();
Doc.DataSet.ReadXml (Reader);
StringWriter sw = new StringWriter ();
XmlTextWriter xw = new XmlTextWriter (sw);
Doc.DataSet.WriteXml (xw);
string s = sw.ToString ();
AssertEquals ("#1", xml, s);
AssertEquals ("#2", xml, Doc.InnerXml);
AssertEquals ("test#01", "EndOfFile", Reader.ReadState.ToString ());
DataSet Set = Doc.DataSet;
AssertEquals ("test#01.5", "2", Set.Tables [0].Rows [1] [0]);
Set.Tables [0].Rows [1] [0] = "64";
AssertEquals ("test#02", "64", Doc.FirstChild.FirstChild.NextSibling.FirstChild.InnerText);
}
[Test]
public void CreateElement1 ()
{
XmlDataDocument doc = new XmlDataDocument ();
doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
doc.Load ("Test/System.Xml/region.xml");
XmlElement Element = doc.CreateElement ("prefix", "localname", "namespaceURI");
AssertEquals ("test#01", "prefix", Element.Prefix);
AssertEquals ("test#02", "localname", Element.LocalName);
AssertEquals ("test#03", "namespaceURI", Element.NamespaceURI);
doc.ImportNode (Element, false);
TextWriter text = new StringWriter ();
doc.Save(text);
string substring = "";
string TextString = text.ToString ();
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
Assert ("test#05", substring.IndexOf ("") != -1);
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
Assert ("test#06", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
Assert ("test#07", substring.IndexOf (" 1") != -1);
for (int i = 0; i < 26; i++) {
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
}
substring = TextString.Substring (0, TextString.Length);
Assert ("test#07", substring.IndexOf ("") != -1);
}
[Test]
public void CreateElement2 ()
{
XmlDataDocument doc = new XmlDataDocument ();
doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
doc.Load ("Test/System.Xml/region.xml");
XmlElement Element = doc.CreateElement ("ElementName");
AssertEquals ("test#01", "", Element.Prefix);
AssertEquals ("test#02", "ElementName", Element.LocalName);
AssertEquals ("test#03", "", Element.NamespaceURI);
Element = doc.CreateElement ("prefix:ElementName");
AssertEquals ("test#04", "prefix", Element.Prefix);
AssertEquals ("test#05", "ElementName", Element.LocalName);
AssertEquals ("test#06", "", Element.NamespaceURI);
}
[Test]
public void CreateElement3 ()
{
XmlDataDocument doc = new XmlDataDocument ();
doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
doc.Load ("Test/System.Xml/region.xml");
XmlElement Element = doc.CreateElement ("ElementName", "namespace");
AssertEquals ("test#01", "", Element.Prefix);
AssertEquals ("test#02", "ElementName", Element.LocalName);
AssertEquals ("test#03", "namespace", Element.NamespaceURI);
Element = doc.CreateElement ("prefix:ElementName", "namespace");
AssertEquals ("test#04", "prefix", Element.Prefix);
AssertEquals ("test#05", "ElementName", Element.LocalName);
AssertEquals ("test#06", "namespace", Element.NamespaceURI);
}
[Test]
public void Navigator ()
{
XmlDataDocument doc = new XmlDataDocument ();
doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
doc.Load ("Test/System.Xml/region.xml");
XPathNavigator Nav = doc.CreateNavigator ();
Nav.MoveToRoot ();
Nav.MoveToFirstChild ();
AssertEquals ("test#01", "Root", Nav.Name.ToString ());
AssertEquals ("test#02", "", Nav.NamespaceURI.ToString ());
AssertEquals ("test#03", "False", Nav.IsEmptyElement.ToString ());
AssertEquals ("test#04", "Element", Nav.NodeType.ToString ());
AssertEquals ("test#05", "", Nav.Prefix);
Nav.MoveToFirstChild ();
Nav.MoveToNext ();
AssertEquals ("test#06", "Region", Nav.Name.ToString ());
AssertEquals ("test#07", "2Western", Nav.Value.Substring(0, Nav.Value.IndexOf ("\n") - 1));
Nav.MoveToFirstChild ();
AssertEquals ("test#08", "2", Nav.Value);
Nav.MoveToRoot ();
AssertEquals ("test#09", "Root", Nav.NodeType.ToString ());
}
// Test constructor
[Test]
public void Test1()
{
//Create an XmlDataDocument.
XmlDataDocument doc = new XmlDataDocument();
//Load the schema file.
doc.DataSet.ReadXmlSchema("Test/System.Xml/store.xsd");
Console.WriteLine ("books: " + doc.DataSet.Tables.Count);
//Load the XML data.
doc.Load("Test/System.Xml/2books.xml");
//Update the price on the first book using the DataSet methods.
DataTable books = doc.DataSet.Tables["book"];
Console.WriteLine ("books: " + doc.DataSet.Tables [0].TableName);
books.Rows[0]["price"] = "12.95";
//string outstring = "";
TextWriter text = new StringWriter ();
text.NewLine = "\n";
doc.Save(text);
//str.Read (bytes, 0, (int)str.Length);
//String OutString = new String (bytes);
string TextString = text.ToString ();
string substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A01", substring.IndexOf ("") == 0);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A02", substring.IndexOf ("") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A03", substring.IndexOf ("") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A04", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A05", substring.IndexOf (" The Handmaid's Tale") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
AssertEquals ("#A06", " 12.95", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A07", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A08", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A09", substring.IndexOf (" Pride And Prejudice") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A10", substring.IndexOf (" 24.95") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#A11", substring.IndexOf (" ") != -1);
substring = TextString;
Assert ("#A12", substring.IndexOf ("") != -1);
}
// Test public fields
[Test]
public void Test2()
{
DataSet RegionDS = new DataSet ();
DataRow RegionRow;
RegionDS.ReadXmlSchema ("Test/System.Xml/region.xsd");
AssertEquals ("Was read correct?", 1, RegionDS.Tables.Count);
XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
DataDoc.Load("Test/System.Xml/region.xml" );
RegionRow = RegionDS.Tables[0].Rows[0];
RegionDS.AcceptChanges ();
RegionRow["RegionDescription"] = "Reeeeeaalllly Far East!";
RegionDS.AcceptChanges ();
TextWriter text = new StringWriter ();
text.NewLine = "\n";
DataDoc.Save (text);
string TextString = text.ToString ();
string substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
//AssertEquals ("#B01", "", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
AssertEquals ("#B02", "", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B03", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B04", substring.IndexOf (" 1") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
AssertEquals ("#B05", " Reeeeeaalllly Far East!", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B06", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B07", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B08", substring.IndexOf (" 2") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B09", substring.IndexOf (" Western") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B10", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B11", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B12", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B13", substring.IndexOf (" 3") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B14", substring.IndexOf (" Northern") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B15", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B16", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B17", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B18", substring.IndexOf (" 4") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B19", substring.IndexOf (" Southern") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B20", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B21", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B22", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B23", substring.IndexOf (" 12") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B24", substring.IndexOf (" Hi There") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B25", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B26", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B27", substring.IndexOf (" 12") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B28", substring.IndexOf (" Hi There") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#B29", substring.IndexOf (" ") != -1);
}
[Test]
public void Test3()
{
XmlDataDocument DataDoc = new XmlDataDocument ();
DataSet dataset = DataDoc.DataSet;
dataset.ReadXmlSchema ("Test/System.Xml/region.xsd");
DataDoc.Load("Test/System.Xml/region.xml" );
DataDoc.GetElementsByTagName ("Region") [0].RemoveAll ();
TextWriter text = new StringWriter ();
text.NewLine = "\n";
dataset.WriteXml (text);
//DataDoc.Save (text);
string TextString = text.ToString ();
string substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C01", substring.IndexOf ("") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
AssertEquals ("#C02", " ", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
AssertEquals ("#C03", " ", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
AssertEquals ("#C04", " 2", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
// Regardless of NewLine value, original xml contains CR
// (but in the context of XML spec, it should be normalized)
AssertEquals ("#C05", " Western\r", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C06", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
AssertEquals ("#C07", " ", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C08", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C09", substring.IndexOf (" 3") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
// Regardless of NewLine value, original xml contains CR
// (but in the context of XML spec, it should be normalized)
AssertEquals ("#C10", " Northern\r", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C11", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C12", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C13", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C14", substring.IndexOf (" 4") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C15", substring.IndexOf (" Southern") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C16", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#C17", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.Length);
Assert ("#C18", substring.IndexOf ("") != -1);
}
[Test]
public void Test4 ()
{
DataSet RegionDS = new DataSet ();
RegionDS.ReadXmlSchema ("Test/System.Xml/region.xsd");
XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
DataDoc.Load("Test/System.Xml/region.xml" );
AssertEquals (true, RegionDS.EnforceConstraints);
DataTable table = DataDoc.DataSet.Tables ["Region"];
DataRow newRow = table.NewRow ();
newRow [0] = "new row";
newRow [1] = "new description";
table.Rows.Add (newRow);
TextWriter text = new StringWriter ();
text.NewLine = "\n";
DataDoc.Save (text);
string TextString = text.ToString ();
string substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F02", substring.IndexOf ("") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F03", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F04", substring.IndexOf (" 1") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
// Regardless of NewLine value, original xml contains CR
// (but in the context of XML spec, it should be normalized)
AssertEquals ("#F05", " Eastern\r", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
AssertEquals ("#F06", " ", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F07", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F08", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F09", substring.IndexOf (" 2") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F10", substring.IndexOf (" Western") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F11", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F12", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F13", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F14", substring.IndexOf (" 3") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F15", substring.IndexOf (" Northern") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F16", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F17", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F18", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F19", substring.IndexOf (" 4") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
// Regardless of NewLine value, original xml contains CR
// (but in the context of XML spec, it should be normalized)
AssertEquals ("#F20", " Southern\r", substring);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F21", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F22", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F23", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F24", substring.IndexOf (" 12") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F25", substring.IndexOf (" Hi There") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F26", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F27", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F28", substring.IndexOf (" 12") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F29", substring.IndexOf (" Hi There") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F30", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F31", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F32", substring.IndexOf (" new row") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F33", substring.IndexOf (" new description") != -1);
substring = TextString.Substring (0, TextString.IndexOf(EOL));
TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);
Assert ("#F34", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.Length);
Assert ("#F35", substring.IndexOf ("") != -1);
}
[Test]
public void Test5 ()
{
DataSet RegionDS = new DataSet ();
RegionDS.ReadXmlSchema ("Test/System.Xml/region.xsd");
XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
DataDoc.Load("Test/System.Xml/region.xml" );
try {
DataDoc.DocumentElement.AppendChild (DataDoc.DocumentElement.FirstChild);
Fail ("#G01");
} catch (Exception e) {
AssertEquals ("#G02", typeof (InvalidOperationException), e.GetType ());
AssertEquals ("#G03", "Please set DataSet.EnforceConstraints == false before trying to edit " +
"XmlDataDocument using XML operations.", e.Message);
DataDoc.DataSet.EnforceConstraints = false;
}
XmlElement newNode = DataDoc.CreateElement ("Region");
XmlElement newChildNode = DataDoc.CreateElement ("RegionID");
newChildNode.InnerText = "64";
XmlElement newChildNode2 = DataDoc.CreateElement ("RegionDescription");
newChildNode2.InnerText = "test node";
newNode.AppendChild (newChildNode);
newNode.AppendChild (newChildNode2);
DataDoc.DocumentElement.AppendChild (newNode);
TextWriter text = new StringWriter ();
//DataDoc.Save (text);
DataDoc.DataSet.WriteXml(text);
string TextString = text.ToString ();
string substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
for (int i = 0; i < 21; i++) {
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
}
Assert ("#G04", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
Assert ("#G05", substring.IndexOf (" 64") != -1);
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
Assert ("#G06", substring.IndexOf (" test node") != -1);
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
Assert ("#G07", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.Length);
Assert ("#G08", substring.IndexOf ("") != -1);
}
[Test]
public void Test6 ()
{
DataSet RegionDS = new DataSet ();
RegionDS.ReadXmlSchema ("Test/System.Xml/region.xsd");
XmlDataDocument DataDoc = new XmlDataDocument (RegionDS);
DataDoc.Load("Test/System.Xml/region.xml" );
DataDoc.DataSet.EnforceConstraints = false;
XmlElement newNode = DataDoc.CreateElement ("Region");
XmlElement newChildNode = DataDoc.CreateElement ("RegionID");
newChildNode.InnerText = "64";
XmlElement newChildNode2 = null;
try {
newChildNode2 = DataDoc.CreateElement ("something else");
Fail ("#H01");
} catch (XmlException) {
}
newChildNode2 = DataDoc.CreateElement ("something_else");
newChildNode2.InnerText = "test node";
newNode.AppendChild (newChildNode);
newNode.AppendChild (newChildNode2);
DataDoc.DocumentElement.AppendChild (newNode);
TextWriter text = new StringWriter ();
//DataDoc.Save (text);
DataDoc.DataSet.WriteXml(text);
string TextString = text.ToString ();
string substring = TextString.Substring (0, TextString.IndexOf("\n") - 1);
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
for (int i = 0; i < 21; i++) {
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
}
Assert ("#H03", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.IndexOf("\n"));
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
Assert ("#H04", substring.IndexOf (" 64") != -1);
substring = TextString.Substring (0, TextString.IndexOf("\n") );
TextString = TextString.Substring (TextString.IndexOf("\n") + 1);
Assert ("#H05", substring.IndexOf (" ") != -1);
substring = TextString.Substring (0, TextString.Length);
Assert ("#H06", substring.IndexOf ("") != -1);
}
[Test]
public void GetElementFromRow ()
{
XmlDataDocument doc = new XmlDataDocument ();
doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
doc.Load ("Test/System.Xml/region.xml");
DataTable table = doc.DataSet.Tables ["Region"];
XmlElement element = doc.GetElementFromRow (table.Rows [2]);
AssertEquals ("#D01", "Region", element.Name);
AssertEquals ("#D02", "3", element ["RegionID"].InnerText);
try {
element = doc.GetElementFromRow (table.Rows [4]);
Fail ("#D03");
} catch (Exception e) {
AssertEquals ("#D04", typeof (IndexOutOfRangeException), e.GetType ());
AssertEquals ("#D05", "There is no row at position 4.", e.Message);
}
}
[Test]
public void GetRowFromElement ()
{
XmlDataDocument doc = new XmlDataDocument ();
doc.DataSet.ReadXmlSchema ("Test/System.Xml/region.xsd");
doc.Load ("Test/System.Xml/region.xml");
XmlElement root = doc.DocumentElement;
DataRow row = doc.GetRowFromElement((XmlElement)root.FirstChild);
AssertEquals ("#E01", "1", row [0]);
row = doc.GetRowFromElement((XmlElement)root.ChildNodes [2]);
AssertEquals ("#E02", "3", row [0]);
}
}
}