Merge pull request #3968 from BrzVlad/fix-monitor-exception
[mono.git] / mcs / class / System.XML / Test / System.Xml.Serialization / XmlSerializerTests.cs
index 1c81dd737f4cc1b1eb5cbbf70c5b2705882604fe..61835e709a09541daa56c89b501efc256c0ba3c1 100644 (file)
@@ -161,14 +161,12 @@ namespace MonoTests.System.XmlSerialization
                }
 
                // test constructors
-#if USE_VERSION_1_1    // It doesn't pass on MS.NET 1.1.
                [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
                public void TestConstructor()
                {
                        XmlSerializer ser = new XmlSerializer (null, "");
                }
-#else
-#endif
 
                // test basic types ////////////////////////////////////////////////////////
                [Test]
@@ -278,7 +276,7 @@ namespace MonoTests.System.XmlSerialization
                }
 
                [Test]
-               [Category ("NotWorking")]
+               [Category ("MobileNotWorking")]
                public void TestSerializeEnumeration_FromValue_Encoded ()
                {
                        SerializeEncoded ((int) SimpleEnumeration.SECOND, typeof (SimpleEnumeration));
@@ -376,7 +374,7 @@ namespace MonoTests.System.XmlSerialization
                }
 
                [Test]
-               [Category ("NotWorking")]
+               [Category ("MobileNotWorking")]
                public void TestSerializeEnumDefaultValue_Encoded ()
                {
                        SerializeEncoded (new EnumDefaultValue ());
@@ -729,7 +727,7 @@ namespace MonoTests.System.XmlSerialization
                }
 
                [Test]
-               [Category ("NotDotNet")] // MS bug
+               [Category ("NotWorking")] // MS bug
                public void TestSerializeField_Encoded ()
                {
                        Field_Encoded f = new Field_Encoded ();
@@ -1006,7 +1004,26 @@ namespace MonoTests.System.XmlSerialization
                                XmlSchema.Namespace, XmlSchema.InstanceNamespace, AnotherNamespace,
                                ANamespace), sw.ToString (), "#3");
                }
-
+               
+               [Test]
+               public void TestRoundTripSerializeOptionalValueTypeContainer ()
+               {
+                       var source = new OptionalValueTypeContainer ();
+                       source.IsEmpty = true;
+                       source.IsEmptySpecified = true;
+                       var ser = new XmlSerializer (typeof (OptionalValueTypeContainer));
+                       string xml;
+                       using (var t = new StringWriter ()) {
+                               ser.Serialize (t, source);
+                               xml = t.ToString();
+                       }
+                       using (var s = new StringReader (xml)) {
+                               var obj = (OptionalValueTypeContainer) ser.Deserialize(s);
+                               Assert.AreEqual (source.IsEmpty, obj.IsEmpty, "#1");
+                               Assert.AreEqual (source.IsEmptySpecified, obj.IsEmptySpecified, "#2");
+                       }
+               }
+               
                [Test]
                public void TestSerializePlainContainer ()
                {
@@ -1535,7 +1552,6 @@ namespace MonoTests.System.XmlSerialization
                }
 
                [Test]
-               [Category ("NotWorking")] // SerializationCodeGenerator outputs wrong xsi:type for flagencoded in #C1
                public void TestSerializeDefaultValueAttribute_Encoded ()
                {
                        SoapAttributeOverrides overrides = new SoapAttributeOverrides ();
@@ -1733,7 +1749,7 @@ namespace MonoTests.System.XmlSerialization
 
                [Test]
                [ExpectedException (typeof (InvalidOperationException))]
-               [Category ("NotWorking")]
+               [Category ("MobileNotWorking")]
                public void TestSerializeXmlNodeArrayIncludesAttribute ()
                {
                        XmlDocument doc = new XmlDocument ();
@@ -1921,6 +1937,17 @@ namespace MonoTests.System.XmlSerialization
                        Assert.AreEqual (Infoset (res), WriterText);
                }
 
+               [Test] // Covers #36829
+               public void TestSubclassElementList ()
+               {
+                       var o = new SubclassTestList () { Items = new List<object> () { new SubclassTestSub () } };
+                       Serialize (o);
+
+                       string res = "<SubclassTestList xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>";
+                       res += "<b xsi:type=\"SubclassTestSub\"/></SubclassTestList>";
+                       Assert.AreEqual (Infoset (res), WriterText);
+               }
+
                [Test]
                [ExpectedException (typeof (InvalidOperationException))]
                public void TestArrayAttributeWithWrongDataType ()
@@ -2216,14 +2243,14 @@ namespace MonoTests.System.XmlSerialization
                }
 
                [Test]
-               [ExpectedException (typeof (InvalidOperationException))]
+               [Category ("MobileNotWorking")]
                public void XmlArrayAttributeUnqualifiedWithNamespace ()
                {
                        new XmlSerializer (typeof (XmlArrayUnqualifiedWithNamespace));
                }
 
                [Test]
-               [ExpectedException (typeof (InvalidOperationException))]
+               [Category ("MobileNotWorking")]
                public void XmlArrayItemAttributeUnqualifiedWithNamespace ()
                {
                        new XmlSerializer (typeof (XmlArrayItemUnqualifiedWithNamespace));
@@ -2294,6 +2321,7 @@ namespace MonoTests.System.XmlSerialization
                        Assert.AreEqual ("<:ErrorneousGetSchema></>", Infoset (sw.ToString ()));
                }
 
+               [Test]
                public void DateTimeRoundtrip ()
                {
                        // bug #337729
@@ -3339,7 +3367,7 @@ namespace MonoTests.System.XmlSerialization
                }
 
                [Test]
-               [Category("NotDotNet")]
+               [Category("NotWorking")]
                public void ShouldSerializeGeneric ()
                {
                        var ser = new XmlSerializer (typeof (ClassWithShouldSerializeGeneric));
@@ -3488,41 +3516,40 @@ namespace MonoTests.System.XmlSerialization
                        generationThreshold.SetValue (null, generationThresholdOld);
                        generatorFallback.SetValue (null, generatorFallbackOld);
                }
+       }
 
 #region XmlInclude on abstract class test classes
 
-               [XmlType]
-               public class ContainerTypeForTest
-               {
-                       [XmlElement ("XmlFirstType", typeof (FirstDerivedTypeForTest))]
-                       [XmlElement ("XmlIntermediateType", typeof (IntermediateTypeForTest))]
-                       [XmlElement ("XmlSecondType", typeof (SecondDerivedTypeForTest))]
-                       public AbstractTypeForTest MemberToUseInclude { get; set; }
-               }
-
-               [XmlInclude (typeof (FirstDerivedTypeForTest))]
-               [XmlInclude (typeof (IntermediateTypeForTest))]
-               [XmlInclude (typeof (SecondDerivedTypeForTest))]
-               public abstract class AbstractTypeForTest
-               {
-               }
+       [XmlType]
+       public class ContainerTypeForTest
+       {
+               [XmlElement ("XmlSecondType", typeof (SecondDerivedTypeForTest))]
+               [XmlElement ("XmlIntermediateType", typeof (IntermediateTypeForTest))]
+               [XmlElement ("XmlFirstType", typeof (FirstDerivedTypeForTest))]
+               public AbstractTypeForTest MemberToUseInclude { get; set; }
+       }
 
-               public class IntermediateTypeForTest : AbstractTypeForTest
-               {
-                       [XmlAttribute (AttributeName = "intermediate")]
-                       public bool IntermediateMember { get; set; }
-               }
+       [XmlInclude (typeof (SecondDerivedTypeForTest))]
+       [XmlInclude (typeof (IntermediateTypeForTest))]
+       [XmlInclude (typeof (FirstDerivedTypeForTest))]
+       public abstract class AbstractTypeForTest
+       {
+       }
 
-               public class FirstDerivedTypeForTest : AbstractTypeForTest
-               {
-                       public string FirstMember { get; set; }
-               }
+       public class IntermediateTypeForTest : AbstractTypeForTest
+       {
+               [XmlAttribute (AttributeName = "intermediate")]
+               public bool IntermediateMember { get; set; }
+       }
 
-               public class SecondDerivedTypeForTest : IntermediateTypeForTest
-               {
-                       public string SecondMember { get; set; }
-               }
-#endregion
+       public class FirstDerivedTypeForTest : AbstractTypeForTest
+       {
+               public string FirstMember { get; set; }
+       }
 
+       public class SecondDerivedTypeForTest : IntermediateTypeForTest
+       {
+               public string SecondMember { get; set; }
        }
+#endregion
 }