Fix bug#353603 +-Infinity & NaN default ToString.
authorEyal Alalouf <eyala@mainsoft.com>
Mon, 14 Jan 2008 13:44:51 +0000 (13:44 -0000)
committerEyal Alalouf <eyala@mainsoft.com>
Mon, 14 Jan 2008 13:44:51 +0000 (13:44 -0000)
svn path=/trunk/mcs/; revision=92858

mcs/class/corlib/System/ChangeLog
mcs/class/corlib/System/Double.cs
mcs/class/corlib/System/NumberFormatter.cs
mcs/class/corlib/System/Single.cs
mcs/class/corlib/Test/System/ChangeLog
mcs/class/corlib/Test/System/DoubleTest.cs
mcs/class/corlib/Test/System/NumberFormatterTest.cs

index 2dc9b6f364a71ed37351fc402aa31aa305a8efeb..e4c7179180160b2b3f9ba780510ba1793c6a5c36 100644 (file)
@@ -1,8 +1,15 @@
+2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
+
+       * NumberFormatter.cs, Double.cs, Single.cs: Fix Single & Double default
+         ToString to handle +-Infinity & NaN.
+
+
 2008-01-14  Sephane Delcroix  <sdelcroix@novell.com>
 
        * DateTimeOffset.cs: ParseExact (string, string, IFormatProvider) 
        implemented.
 
+
 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
 
        * NumberFormatter.cs: Remove some redundant assignments.
index f1a0bcdbbfb4d56d89fc61734277d5ec89bc90e7..9f5ff1c60af8c6f59c62e13d0a3ee5841abb84b4 100644 (file)
@@ -507,13 +507,13 @@ namespace System {
                public override string ToString ()
                {
                        NumberFormatInfo nfi = NumberFormatInfo.GetInstance (null);
-                       return new NumberFormatter(null, m_value).FormatGeneral (-1, nfi);
+                       return new NumberFormatter(null, m_value).FormatGeneral (nfi);
                }
 
                public string ToString (IFormatProvider provider)
                {
                        NumberFormatInfo nfi = NumberFormatInfo.GetInstance (provider);
-                       return new NumberFormatter(null, m_value).FormatGeneral (-1, nfi);
+                       return new NumberFormatter(null, m_value).FormatGeneral (nfi);
                }
 
                public string ToString (string format)
index e0f3fcec27363b74a2e1d8c611cf01bd5def272f..77b8f48c867d6509c8894a050f9d4f6d9ea83265 100644 (file)
@@ -1129,7 +1129,21 @@ namespace System
                        return nfc.FormatGeneral (_defPrecision + 2, nfi);
                }
 
-               public string FormatGeneral (int precision, NumberFormatInfo nfi)
+               public string FormatGeneral (NumberFormatInfo nfi)
+               {
+                       if (_NaN)
+                               return nfi.NaNSymbol;
+
+                       if (_infinity)
+                               if (_positive)
+                                       return nfi.PositiveInfinitySymbol;
+                               else
+                                       return nfi.NegativeInfinitySymbol;
+
+                       return FormatGeneral (-1, nfi);
+               }
+
+               private string FormatGeneral (int precision, NumberFormatInfo nfi)
                {
                        bool enableExp;
                        if (precision == -1) {
index 38f69baa22b9637ebd122db9f9c1264be28a406a..67cc7021ea6914796b47bedf06d34ebeda3c3fb4 100644 (file)
@@ -234,13 +234,13 @@ namespace System
                public override string ToString ()
                {
                        NumberFormatInfo nfi = NumberFormatInfo.GetInstance (null);
-                       return new NumberFormatter(null, m_value).FormatGeneral (-1, nfi);
+                       return new NumberFormatter(null, m_value).FormatGeneral (nfi);
                }
 
                public string ToString (IFormatProvider provider)
                {
                        NumberFormatInfo nfi = NumberFormatInfo.GetInstance (provider);
-                       return new NumberFormatter(null, m_value).FormatGeneral (-1, nfi);
+                       return new NumberFormatter(null, m_value).FormatGeneral (nfi);
                }
 
                public string ToString (string format)
index 5a9df9d9fcb7a856ba03ef04bed71b424f0db85b..fa0a5d3a74150cd0d51bd7531424dc53d0fb7c24 100644 (file)
@@ -1,3 +1,7 @@
+2008-01-14  Eyal Alaluf <eyala@mainsoft.com>
+
+       * DoubleTest.cs: Test +-Infinity & NaN default ToString (bug #353603)
+
 2008-01-14  Stephane Delcroix  <sdelcroix@novell.com>
 
        * DateTimeOffsetTest.cs: Tests for ParseExact (string, string, 
index a131ba899d05bde89cc79453f49e32aff10a8aa3..2b0fa3da719770ade1e45c521e454776b36dfb72 100644 (file)
@@ -522,7 +522,6 @@ namespace MonoTests.System
                }
 
                [Test]
-               [Category ("NotWorking")]
                public void TestRoundtrip () // bug #320433
                {
                        Assert.AreEqual ("10.78", 10.78.ToString ("R", NumberFormatInfo.InvariantInfo));
index cfec58d4d7f2f4110743c9e8d907be97a15bd9df..dd7f38cc47cf3dbe5004ee0c0d425f75f6d0ed47 100644 (file)
@@ -2951,6 +2951,17 @@ namespace MonoTests.System
                        AssertEquals ("#03", "+1.000000E-000", (-1.0).ToString ("E", nfi));\r
                }\r
 \r
+               [Test]\r
+               public void TestNaNToString ()\r
+               {\r
+                       AssertEquals ("#01", "Infinity", Double.PositiveInfinity.ToString());\r
+                       AssertEquals ("#02", "-Infinity", Double.NegativeInfinity.ToString());\r
+                       AssertEquals ("#03", "NaN", Double.NaN.ToString());\r
+                       AssertEquals ("#01", "Infinity", Single.PositiveInfinity.ToString());\r
+                       AssertEquals ("#02", "-Infinity", Single.NegativeInfinity.ToString());\r
+                       AssertEquals ("#03", "NaN", Single.NaN.ToString());\r
+               }\r
+\r
                [Test]\r
                public void Test11032 ()\r
                {\r