Add tests for bug #8468
authorLluis Sanchez <lluis@xamarin.com>
Mon, 19 Nov 2012 20:03:20 +0000 (21:03 +0100)
committerLluis Sanchez <lluis@xamarin.com>
Mon, 19 Nov 2012 20:21:03 +0000 (21:21 +0100)
Conflicts:

mcs/class/System.XML/Test/System.Xml.Serialization/DeserializeTests.cs

mcs/class/System.XML/Test/System.Xml.Serialization/DeserializeTests.cs
mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializerTestClasses.cs

index 459620cb13f8ee748e29c6b87d3aa3c5b2b3c983..362d61fbcf7f260015744fae20312ef274242da6 100644 (file)
@@ -1621,5 +1621,48 @@ namespace MonoTests.System.XmlSerialization
                                Assert.IsNull(foobar.Baz);
                        }
                }
+
+               [Test] // bug #8468
+               public void TestUseSubclassDefaultNamespace ()
+               {
+                       XmlSerializer xs = new XmlSerializer (typeof (Bug8468Subclass));
+                       string msg = "<Test xmlns=\"http://test-namespace\"><Base>BaseValue</Base><Mid>MidValue</Mid></Test>";
+                       var res1 = (Bug8468Subclass)xs.Deserialize (new StringReader (msg));
+                       Assert.IsNotNull (res1);
+                       Assert.AreEqual ("BaseValue", res1.Base);
+                       Assert.AreEqual ("MidValue", res1.Mid);
+
+                       xs = new XmlSerializer (typeof (Bug8468SubclassNoNamespace), "http://test-namespace");
+                       var res2 = (Bug8468SubclassNoNamespace)xs.Deserialize (new StringReader (msg));
+                       Assert.IsNotNull (res2);
+                       Assert.AreEqual ("BaseValue", res2.Base);
+                       Assert.AreEqual ("MidValue", res2.Mid);
+
+                       xs = new XmlSerializer (typeof (Bug8468SubclassV2));
+                       var res3 = (Bug8468SubclassV2)xs.Deserialize (new StringReader (msg));
+                       Assert.IsNotNull (res3);
+                       Assert.IsNull (res3.Base);
+                       Assert.AreEqual ("MidValue", res3.Mid);
+
+                       xs = new XmlSerializer (typeof (Bug8468SubclassNoNamespaceV2), "http://test-namespace");
+                       var res4 = (Bug8468SubclassNoNamespaceV2)xs.Deserialize (new StringReader (msg));
+                       Assert.IsNotNull (res4);
+                       Assert.IsNull (res4.Base);
+                       Assert.AreEqual ("MidValue", res4.Mid);
+
+                       msg = "<Test xmlns=\"http://test-namespace\"><Base xmlns=\"\">BaseValue</Base><Mid>MidValue</Mid></Test>";
+
+                       xs = new XmlSerializer (typeof (Bug8468SubclassV2));
+                       var res5 = (Bug8468SubclassV2)xs.Deserialize (new StringReader (msg));
+                       Assert.IsNotNull (res5);
+                       Assert.AreEqual ("BaseValue", res5.Base);
+                       Assert.AreEqual ("MidValue", res5.Mid);
+
+                       xs = new XmlSerializer (typeof (Bug8468SubclassNoNamespaceV2), "http://test-namespace");
+                       var res6 = (Bug8468SubclassNoNamespaceV2)xs.Deserialize (new StringReader (msg));
+                       Assert.IsNotNull (res6);
+                       Assert.AreEqual ("BaseValue", res6.Base);
+                       Assert.AreEqual ("MidValue", res6.Mid); 
+               }
        }
 }
index 955a8e3f7cb12f20d34d8afeb3ecd968cd0ddab0..006202d5860953f26af003dddd1a8c2a6859dc9b 100644 (file)
@@ -1053,5 +1053,46 @@ namespace MonoTests.System.Xml.TestClasses
                [XmlElementAttribute (DataType = "date")]
                public DateTime SomeDate;
        }
+
+       public class Bug8468BaseClass
+       {
+               public string Base;
+       }
+
+       public class Bug8468MidClass: Bug8468BaseClass
+       {
+               public string Mid;
+       }
+
+       [XmlRoot("Test", Namespace="http://test-namespace")]
+       public class Bug8468Subclass: Bug8468MidClass
+       {
+       }
+
+       [XmlRoot("Test")]
+       public class Bug8468SubclassNoNamespace: Bug8468MidClass
+       {
+       }
+
+       [XmlRoot("Test", Namespace="")]
+       public class Bug8468BaseClassV2
+       {
+               public string Base;
+       }
+
+       public class Bug8468MidClassV2: Bug8468BaseClassV2
+       {
+               public string Mid;
+       }
+
+       [XmlRoot("Test", Namespace="http://test-namespace")]
+       public class Bug8468SubclassV2: Bug8468MidClassV2
+       {
+       }
+
+       [XmlRoot("Test")]
+       public class Bug8468SubclassNoNamespaceV2: Bug8468MidClassV2
+       {
+       }
 }