Browse Source

* XmlTypeMapping.cs: fixed GetXmlName method, added difference of value serialization of flags and non-flags enums
* XmlSerializerTestClasses.cs: added two enum types, without 0-value
* XmlSerializerTests.cs: added tests for serialization enum's default value


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

Vladimir Krasnov 20 years ago
parent
commit
cf50bd21d7

+ 5 - 0
mcs/class/System.XML/System.Xml.Serialization/ChangeLog

@@ -1,3 +1,8 @@
+2005-11-24  Vladimir Krasnov  <[email protected]>
+	
+	* XmlTypeMapping.cs: fixed GetXmlName method, added difference
+	of value serialization of flags and non-flags enums
+
 2005-11-23  Konstantin Triger <[email protected]>
 
 	* XmlSchemaExporter.cs: do not import empty namespaces.

+ 1 - 1
mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs

@@ -667,7 +667,7 @@ namespace System.Xml.Serialization
 			
 			// Enum default value will not be written
 			// unless it is one of the enum legal values
-			if (enumName.Equals("0"))
+			if (enumName == "0" && IsFlags)
 				return String.Empty;
 			else
 				return Convert.ToInt64(enumValue).ToString(CultureInfo.InvariantCulture);

+ 7 - 0
mcs/class/System.XML/Test/System.Xml.Serialization/ChangeLog

@@ -1,3 +1,10 @@
+2005-11-24  Vladimir Krasnov  <[email protected]>
+
+	* XmlSerializerTestClasses.cs: added two enum types, without 
+	0-value
+	* XmlSerializerTests.cs: added tests for serialization enum's 
+	default value
+
 2005-09-26  Lluis Sanchez Gual  <[email protected]> 
 
 	* XmlSerializerTests.cs, DeserializeTests.cs, 

+ 4 - 0
mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializerTestClasses.cs

@@ -18,6 +18,10 @@ using System.Xml;
 namespace MonoTests.System.Xml.TestClasses
 {
 	public enum SimpleEnumeration { FIRST, SECOND };
+
+	[Flags]
+	public enum EnumDefaultValue { e1 = 1, e2 = 2, e3 = 3 }
+	public enum EnumDefaultValueNF { e1 = 1, e2 = 2, e3 = 3 }
 	
 	public class SimpleClass
 	{

+ 12 - 0
mcs/class/System.XML/Test/System.Xml.Serialization/XmlSerializerTests.cs

@@ -209,6 +209,18 @@ namespace MonoTests.System.XmlSerialization
 			AssertEquals(Infoset("<SimpleEnumeration>SECOND</SimpleEnumeration>"), WriterText);
 		}
 		
+		[Test]
+		public void TestSerializeEnumDefaultValue() {
+			Serialize(new EnumDefaultValue());
+			AssertEquals(Infoset("<EnumDefaultValue />"), WriterText);
+			
+			Serialize(new EnumDefaultValueNF());
+			AssertEquals(Infoset("<EnumDefaultValueNF>0</EnumDefaultValueNF>"), WriterText);
+
+			Serialize(new SimpleEnumeration());
+			AssertEquals(Infoset("<SimpleEnumeration>FIRST</SimpleEnumeration>"), WriterText);
+		}
+
 		[Test]
 		public void TestSerializeQualifiedName()
 		{