Fix XLinq decimal value formatting to become invariant. Fixed bug #3634.
authorAtsushi Eno <atsushi@ximian.com>
Thu, 8 Mar 2012 09:25:58 +0000 (18:25 +0900)
committerAtsushi Eno <atsushi@ximian.com>
Thu, 8 Mar 2012 09:25:58 +0000 (18:25 +0900)
mcs/class/System.Xml.Linq/System.Xml.Linq/XUtil.cs
mcs/class/System.Xml.Linq/Test/System.Xml.Linq/XElementTest.cs

index 69890fb76c30b21e9fc115dbb9ea2c06f90ac3b9..69cb484b23ed49c47b3e3b6a1895c2fec40dcb51 100644 (file)
@@ -65,6 +65,8 @@ namespace System.Xml.Linq
                                return (string) o;
                        case TypeCode.DateTime:
                                return XmlConvert.ToString ((DateTime) o, XmlDateTimeSerializationMode.RoundtripKind);
+                       case TypeCode.Decimal:
+                               return ((decimal) o).ToString (CultureInfo.InvariantCulture);
                        case TypeCode.Double:
                                return ((double) o).ToString ("r", CultureInfo.InvariantCulture);
                        case TypeCode.Single:
index 67a602516a28c76601677602f9b97e97da21dafb..2c4691310180d3c811f7e66d515d0439eb2556dc 100644 (file)
@@ -1690,5 +1690,19 @@ namespace MonoTests.System.Xml.Linq
                                Thread.CurrentThread.CurrentCulture = current;
                        }
                }
+
+               [Test]
+               public void DecimalFormatting () // bug #3634
+               {
+                       var data = 5.5M;
+                       var bak = Thread.CurrentThread.CurrentCulture;
+                       Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfoByIetfLanguageTag("nl-NL");
+                       try {
+                               var element = new XElement ("Demo", data);
+                               Assert.AreEqual ("<Demo>5.5</Demo>", element.ToString (), "#1");
+                       } finally {
+                               Thread.CurrentThread.CurrentCulture = bak;
+                       }
+               }
        }
 }