2004-05-05 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Wed, 5 May 2004 17:48:54 +0000 (17:48 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Wed, 5 May 2004 17:48:54 +0000 (17:48 -0000)
* DataColumnCollectionTest.cs : catch only specific exception. Don't
  rely on localizable error message.
* DataSetTest.cs : Attribute orders should not be significant, so
  just hacked to match current implementation's order.
  Added WriteNestedTableXml().

svn path=/trunk/mcs/; revision=26774

mcs/class/System.Data/Test/System.Data/ChangeLog
mcs/class/System.Data/Test/System.Data/DataColumnCollectionTest.cs
mcs/class/System.Data/Test/System.Data/DataSetTest.cs

index 4dc0f19a6e54a375ef1ee730de39de1f51aa3a97..c51bfc4cef57b8bd600ccf618194cd1b3ddc05a1 100644 (file)
@@ -1,3 +1,11 @@
+2004-05-05  Atsushi Enomoto <atsushi@ximian.com>
+
+       * DataColumnCollectionTest.cs : catch only specific exception. Don't
+         rely on localizable error message.
+       * DataSetTest.cs : Attribute orders should not be significant, so
+         just hacked to match current implementation's order.
+         Added WriteNestedTableXml().
+
 2004-05-05  Atsushi Enomoto <atsushi@ximian.com>
 
        * ConstraintCollectionTest.cs : uncommented some tests that should be
index 75ea0fec857177427b567150a12f9b7db68479a1..8db0c37a47d2b8b898bfa2e1abf58f68d23e3508 100644 (file)
@@ -194,17 +194,17 @@ namespace MonoTests.System.Data
                        try {
                                Cols.Add (C);
                                Fail ("test#04");
-                       } catch (Exception e) {
-                               AssertEquals ("test#05", typeof (ArgumentException), e.GetType ());
-                               AssertEquals ("test#06", "Column 'test' already belongs to this or another DataTable.", e.Message);
+                       } catch (ArgumentException e) {
+//                             AssertEquals ("test#05", typeof (ArgumentException), e.GetType ());
+//                             AssertEquals ("test#06", "Column 'test' already belongs to this or another DataTable.", e.Message);
                        }
 
                        try {
                                Table2.Columns.Add (C);
                                Fail ("test#07");
-                       } catch (Exception e) {
-                               AssertEquals ("test#08", typeof (ArgumentException), e.GetType ());
-                               AssertEquals ("test#09", "Column 'test' already belongs to this or another DataTable.", e.Message);
+                       } catch (ArgumentException e) {
+//                             AssertEquals ("test#08", typeof (ArgumentException), e.GetType ());
+//                             AssertEquals ("test#09", "Column 'test' already belongs to this or another DataTable.", e.Message);
                        }
 
                        DataColumn C2 = new DataColumn ("test");
@@ -212,17 +212,17 @@ namespace MonoTests.System.Data
                        try {
                                Cols.Add (C2);
                                Fail ("test#10");
-                       } catch (Exception e) {
-                               AssertEquals ("test#11", typeof (DuplicateNameException), e.GetType ());
-                               AssertEquals ("test#12", "A DataColumn named 'test' already belongs to this DataTable.", e.Message);
+                       } catch (DuplicateNameException e) {
+//                             AssertEquals ("test#11", typeof (DuplicateNameException), e.GetType ());
+//                             AssertEquals ("test#12", "A DataColumn named 'test' already belongs to this DataTable.", e.Message);
                        }
 
                        try {
                                Cols.Add ("test2", typeof (string), "substring ('fdsafewq', 2)");
                                Fail ("test#13");
-                       } catch (Exception e) {
-                               AssertEquals ("test#14", true, e is InvalidExpressionException);
-                               AssertEquals ("test#15", "Expression 'substring ('fdsafewq', 2)' is invalid.", e.Message);
+                       } catch (InvalidExpressionException e) {
+//                             AssertEquals ("test#14", true, e is InvalidExpressionException);
+//                             AssertEquals ("test#15", "Expression 'substring ('fdsafewq', 2)' is invalid.", e.Message);
                        }
                }
 
index 2d3595f057d7e3a584cca772db3bd85d498496f8..a65d66ca2a757e451bd56e3dfda86dd68bd82759 100644 (file)
@@ -168,12 +168,23 @@ namespace MonoTests.System.Data
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-                       AssertEquals ("test#02", "<xs:schema id=\"test_dataset\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">", substring);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#02", "<xs:schema id=\"test_dataset\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">", substring);\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       AssertEquals ("test#02", "<xs:schema xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"test_dataset\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">", substring);\r
+#else\r
+                       AssertEquals ("test#02", "<xs:schema xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"test_dataset\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">", substring);\r
+#endif\r
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+                       AssertEquals ("test#03", "  <xs:element msdata:IsDataSet=\"true\" msdata:Locale=\"fi-FI\" name=\"test_dataset\">", substring);\r
+#else\r
                        AssertEquals ("test#03", "  <xs:element name=\"test_dataset\" msdata:IsDataSet=\"true\" msdata:Locale=\"fi-FI\">", substring);\r
-                       \r
+#endif\r
+\r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
                        AssertEquals ("test#04", "    <xs:complexType>", substring);\r
@@ -196,7 +207,13 @@ namespace MonoTests.System.Data
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-                       AssertEquals ("test#09", "              <xs:element name=\"first\" msdata:Caption=\"test\" default=\"test_default_value\" minOccurs=\"0\">", substring);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#09", "              <xs:element name=\"first\" msdata:Caption=\"test\" default=\"test_default_value\" minOccurs=\"0\">", substring);\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       AssertEquals ("test#09", "              <xs:element msdata:Caption=\"test\" minOccurs=\"0\" default=\"test_default_value\" name=\"first\">", substring);\r
+#else\r
+                       AssertEquals ("test#09", "              <xs:element minOccurs=\"0\" default=\"test_default_value\" name=\"first\" msdata:Caption=\"test\">", substring);\r
+#endif\r
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
@@ -224,11 +241,19 @@ namespace MonoTests.System.Data
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-#if NET_1_1\r
-                       AssertEquals ("test#16", "              <xs:element name=\"second\" msdata:DataType=\"System.Data.SqlTypes.SqlGuid, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" type=\"xs:string\" minOccurs=\"0\" />", substring);\r
-#else\r
-                       AssertEquals ("test#16", "              <xs:element name=\"second\" msdata:DataType=\"System.Data.SqlTypes.SqlGuid, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" type=\"xs:string\" minOccurs=\"0\" />", substring);\r
-#endif\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+                       // Due to the assembly version difference, this test is index-based\r
+//                     AssertEquals ("test#16", "              <xs:element name=\"second\" msdata:DataType=\"System.Data.SqlTypes.SqlGuid, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\" type=\"xs:string\" minOccurs=\"0\" />", substring);\r
+                       if (substring.IndexOf ("<xs:element") < 0)\r
+                               Fail ("test#16: " + substring);\r
+                       if (substring.IndexOf ("name=\"second\"") < 0)\r
+                               Fail ("test#16: " + substring);\r
+                       if (substring.IndexOf ("msdata:DataType=\"System.Data.SqlTypes.SqlGuid, System.Data, Version=") < 0)\r
+                               Fail ("test#16: " + substring);\r
+                       if (substring.IndexOf ("type=\"xs:string\"") < 0)\r
+                               Fail ("test#16: " + substring);\r
+                       if (substring.IndexOf ("minOccurs=\"0\"") < 0)\r
+                               Fail ("test#16: " + substring);\r
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
@@ -256,7 +281,9 @@ namespace MonoTests.System.Data
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-                       AssertEquals ("test#23", "              <xs:element name=\"second_first\" default=\"default_value\" minOccurs=\"0\">", substring);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#23", "              <xs:element name=\"second_first\" default=\"default_value\" minOccurs=\"0\">", substring);\r
+                       AssertEquals ("test#23", "              <xs:element minOccurs=\"0\" default=\"default_value\" name=\"second_first\">", substring);\r
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
@@ -320,8 +347,13 @@ namespace MonoTests.System.Data
 \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+                       AssertEquals ("test#40", "    <xs:unique msdata:ConstraintName=\"Constraint1\" name=\"second_test_table_Constraint1\">", substring);\r
+#else\r
                        AssertEquals ("test#40", "    <xs:unique name=\"second_test_table_Constraint1\" msdata:ConstraintName=\"Constraint1\">", substring);\r
-                       \r
+#endif\r
+\r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                        TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
                        AssertEquals ("test#41", "      <xs:selector xpath=\".//second_test_table\" />", substring);\r
@@ -496,11 +528,23 @@ namespace MonoTests.System.Data
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-                       AssertEquals ("test#02", "<xs:schema id=\"Root\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">", substring);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#02", "<xs:schema id=\"Root\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">", substring);\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       AssertEquals ("test#02", "<xs:schema xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"Root\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">", substring);\r
+#else\r
+                       AssertEquals ("test#02", "<xs:schema xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"Root\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">", substring);\r
+#endif\r
 \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#03", "  <xs:element name=\"Root\" msdata:IsDataSet=\"true\" msdata:Locale=\"fi-FI\">", substring);\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       AssertEquals ("test#03", "  <xs:element msdata:IsDataSet=\"true\" msdata:Locale=\"fi-FI\" name=\"Root\">", substring);\r
+#else\r
                        AssertEquals ("test#03", "  <xs:element name=\"Root\" msdata:IsDataSet=\"true\" msdata:Locale=\"fi-FI\">", substring);\r
+#endif\r
 \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
@@ -524,13 +568,17 @@ namespace MonoTests.System.Data
 \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-                       AssertEquals ("test#09", "              <xs:element name=\"RegionID\" type=\"xs:string\" minOccurs=\"0\" />", substring);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#09", "              <xs:element name=\"RegionID\" type=\"xs:string\" minOccurs=\"0\" />", substring);\r
+                       AssertEquals ("test#09", "              <xs:element minOccurs=\"0\" name=\"RegionID\" type=\"xs:string\" />", substring);\r
 \r
-                       substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
+                       substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-                       AssertEquals ("test#10", "              <xs:element name=\"RegionDescription\" type=\"xs:string\" minOccurs=\"0\" />", substring);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#10", "              <xs:element name=\"RegionDescription\" type=\"xs:string\" minOccurs=\"0\" />", substring);\r
+                       AssertEquals ("test#10", "              <xs:element minOccurs=\"0\" name=\"RegionDescription\" type=\"xs:string\" />", substring);\r
 \r
-                       substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
+                       substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
                        AssertEquals ("test#11", "            </xs:sequence>", substring);\r
 \r
@@ -574,9 +622,15 @@ namespace MonoTests.System.Data
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-                       AssertEquals ("test#02", "<xs:schema id=\"NewDataSet\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">", substring);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#02", "<xs:schema id=\"NewDataSet\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">", substring);\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       AssertEquals ("test#02", "<xs:schema xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"NewDataSet\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">", substring);\r
+#else\r
+                       AssertEquals ("test#02", "<xs:schema xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"NewDataSet\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">", substring);\r
+#endif\r
 \r
-                       substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
+                       substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
                        AssertEquals ("test#03", "  <xs:complexType name=\"bookstoreType\">", substring);\r
 \r
@@ -704,7 +758,13 @@ namespace MonoTests.System.Data
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
-                       AssertEquals ("test#02", "<xs:schema id=\"Root\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">", substring);\r
+                       // FIXME: modified attributes based on XmlSchema.Write difference\r
+//                     AssertEquals ("test#02", "<xs:schema id=\"Root\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">", substring);\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       AssertEquals ("test#02", "<xs:schema xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"Root\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">", substring);\r
+#else\r
+                       AssertEquals ("test#02", "<xs:schema xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"Root\" xmlns=\"\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">", substring);\r
+#endif\r
                        \r
                        substring = TextString.Substring (0, TextString.IndexOf(EOL));\r
                         TextString = TextString.Substring (TextString.IndexOf(EOL) + EOL.Length);\r
@@ -852,6 +912,8 @@ namespace MonoTests.System.Data
                [Test]\r
                public void WriteDifferentNamespaceSchema ()\r
                {\r
+                       // I modified attribute order that is not worth testing.\r
+                       /*\r
                        string schema = @"<?xml version='1.0' encoding='utf-16'?>\r
 <xs:schema id='NewDataSet' targetNamespace='urn:bar' xmlns:mstns='urn:bar' xmlns='urn:bar' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' attributeFormDefault='qualified' elementFormDefault='qualified' xmlns:app1='urn:baz' xmlns:app2='urn:foo'>\r
   <!--ATTENTION: This schema contains references to other imported schemas-->\r
@@ -869,6 +931,44 @@ namespace MonoTests.System.Data
     </xs:complexType>\r
   </xs:element>\r
 </xs:schema>";\r
+                        */\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       string schema = @"<?xml version='1.0' encoding='utf-16'?>\r
+<xs:schema xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:mstns='urn:bar' attributeFormDefault='qualified' elementFormDefault='qualified' targetNamespace='urn:bar' id='NewDataSet' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns='urn:bar' xmlns:app1='urn:baz' xmlns:app2='urn:foo'>\r
+  <!--ATTENTION: This schema contains references to other imported schemas-->\r
+  <xs:import namespace='urn:baz' schemaLocation='_app1.xsd' />\r
+  <xs:import namespace='urn:foo' schemaLocation='_app2.xsd' />\r
+  <xs:element name='NewDataSet' msdata:IsDataSet='true' msdata:Locale='fi-FI'>\r
+    <xs:complexType>\r
+      <xs:choice maxOccurs='unbounded'>\r
+        <xs:element ref='app2:NS1Table' />\r
+        <xs:element name='NS2Table'>\r
+          <xs:complexType>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:choice>\r
+    </xs:complexType>\r
+  </xs:element>\r
+</xs:schema>";\r
+#else\r
+                       string schema = @"<?xml version='1.0' encoding='utf-16'?>\r
+<xs:schema xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:mstns='urn:bar' id='NewDataSet' elementFormDefault='qualified' attributeFormDefault='qualified' targetNamespace='urn:bar' xmlns='urn:bar' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:app1='urn:baz' xmlns:app2='urn:foo'>\r
+  <!--ATTENTION: This schema contains references to other imported schemas-->\r
+  <xs:import namespace='urn:baz' schemaLocation='_app1.xsd' />\r
+  <xs:import namespace='urn:foo' schemaLocation='_app2.xsd' />\r
+  <xs:element name='NewDataSet' msdata:IsDataSet='true' msdata:Locale='fi-FI'>\r
+    <xs:complexType>\r
+      <xs:choice maxOccurs='unbounded'>\r
+        <xs:element ref='app2:NS1Table' />\r
+        <xs:element name='NS2Table'>\r
+          <xs:complexType>\r
+          </xs:complexType>\r
+        </xs:element>\r
+      </xs:choice>\r
+    </xs:complexType>\r
+  </xs:element>\r
+</xs:schema>";\r
+#endif\r
 \r
                        DataSet ds = new DataSet();\r
                        DataTable dt = new DataTable ();\r
@@ -914,9 +1014,13 @@ namespace MonoTests.System.Data
                public void SerializeDataSet ()\r
                {\r
                        // see GetReady() for current culture\r
-                       string xml = "<?xml version='1.0' encoding='utf-16'?><DataSet><xs:schema id='DS' xmlns='' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'><xs:element name='DS' msdata:IsDataSet='true' msdata:Locale='fi-FI'><xs:complexType><xs:choice maxOccurs='unbounded' /></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:diffgr='urn:schemas-microsoft-com:xml-diffgram-v1' /></DataSet>";\r
+//                     string xml = "<?xml version='1.0' encoding='utf-16'?><DataSet><xs:schema id='DS' xmlns='' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns:msdata='urn:schemas-microsoft-com:xml-msdata'><xs:element name='DS' msdata:IsDataSet='true' msdata:Locale='fi-FI'><xs:complexType><xs:choice maxOccurs='unbounded' /></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:diffgr='urn:schemas-microsoft-com:xml-diffgram-v1' /></DataSet>";\r
                        // Modified attribute order from MS result\r
-//                     string xml = "<?xml version='1.0' encoding='utf-16'?><DataSet><xs:schema xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' id='DS' xmlns:xs='http://www.w3.org/2001/XMLSchema' xmlns=''><xs:element name='DS' msdata:IsDataSet='true' msdata:Locale='fi-FI'><xs:complexType><xs:choice maxOccurs='unbounded' /></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:diffgr='urn:schemas-microsoft-com:xml-diffgram-v1' /></DataSet>";\r
+#if MS_NET // MS System.XML.dll + Mono System.Data.dll\r
+                       string xml = "<?xml version='1.0' encoding='utf-16'?><DataSet><xs:schema xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' id='DS' xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element msdata:IsDataSet='true' msdata:Locale='fi-FI' name='DS'><xs:complexType><xs:choice maxOccurs='unbounded' /></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:diffgr='urn:schemas-microsoft-com:xml-diffgram-v1' /></DataSet>";\r
+#else\r
+                       string xml = "<?xml version='1.0' encoding='utf-16'?><DataSet><xs:schema xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' id='DS' xmlns='' xmlns:xs='http://www.w3.org/2001/XMLSchema'><xs:element name='DS' msdata:IsDataSet='true' msdata:Locale='fi-FI'><xs:complexType><xs:choice maxOccurs='unbounded' /></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata='urn:schemas-microsoft-com:xml-msdata' xmlns:diffgr='urn:schemas-microsoft-com:xml-diffgram-v1' /></DataSet>";\r
+#endif\r
                        DataSet ds = new DataSet ();\r
                        ds.DataSetName = "DS";\r
                        XmlSerializer ser = new XmlSerializer (typeof (DataSet));\r
@@ -1013,6 +1117,46 @@ namespace MonoTests.System.Data
                                 AssertEquals ("#A22", set.Tables [i].Columns.Count, copySet.Tables [i].Columns.Count);\r
                         }\r
                }\r
-       \r
+\r
+               [Test]\r
+               public void WriteNestedTableXml ()\r
+               {\r
+                       string xml = @"<NewDataSet>\r
+  <tab1>\r
+    <ident>1</ident>\r
+    <name>hoge</name>\r
+    <tab2>\r
+      <timestamp>2004-05-05</timestamp>\r
+    </tab2>\r
+  </tab1>\r
+  <tab1>\r
+    <ident>2</ident>\r
+    <name>fuga</name>\r
+    <tab2>\r
+      <timestamp>2004-05-06</timestamp>\r
+    </tab2>\r
+  </tab1>\r
+</NewDataSet>";\r
+                       DataSet ds = new DataSet ();\r
+                       DataTable dt = new DataTable ("tab1");\r
+                       dt.Columns.Add ("ident");\r
+                       dt.Columns.Add ("name");\r
+                       dt.Rows.Add (new object [] {"1", "hoge"});\r
+                       dt.Rows.Add (new object [] {"2", "fuga"});\r
+                       DataTable dt2 = new DataTable ("tab2");\r
+                       dt2.Columns.Add ("idref");\r
+                       dt2.Columns [0].ColumnMapping = MappingType.Hidden;\r
+                       dt2.Columns.Add ("timestamp");\r
+                       dt2.Rows.Add (new object [] {"1", "2004-05-05"});\r
+                       dt2.Rows.Add (new object [] {"2", "2004-05-06"});\r
+                       ds.Tables.Add (dt);\r
+                       ds.Tables.Add (dt2);\r
+                       DataRelation rel = new DataRelation ("rel", dt.Columns [0], dt2.Columns [0]);\r
+                       rel.Nested = true;\r
+                       ds.Relations.Add (rel);\r
+                       StringWriter sw = new StringWriter ();\r
+                       ds.WriteXml (sw);\r
+                       AssertEquals (xml, sw.ToString ());\r
+               }\r
         }\r
 }\r