[corlib] Allow bool/char to enum conversions
[mono.git] / mcs / class / corlib / Test / System / NumberFormatterTest.cs
index 521f41f1bbcfe68ace1f4bcc9e7874ccf1afa283..c0dce0e1d544ea41ff8c13a3deea467234334447 100644 (file)
@@ -10,6 +10,7 @@
 using System;
 using System.Globalization;
 using System.Threading;
+using System.Text;
 
 using NUnit.Framework;
 
@@ -2954,19 +2955,20 @@ namespace MonoTests.System
                [Test]
                public void TestNaNToString ()
                {
-                       Assert.AreEqual ("Infinity", Double.PositiveInfinity.ToString(), "#01");
-                       Assert.AreEqual ("-Infinity", Double.NegativeInfinity.ToString(), "#02");
-                       Assert.AreEqual ("NaN", Double.NaN.ToString(), "#03");
-                       Assert.AreEqual ("Infinity", Single.PositiveInfinity.ToString(), "#04");
-                       Assert.AreEqual ("-Infinity", Single.NegativeInfinity.ToString(), "#05");
-                       Assert.AreEqual ("NaN", Single.NaN.ToString(), "#06");
+                       var nfi = CultureInfo.CurrentCulture.NumberFormat;
+                       Assert.AreEqual (nfi.PositiveInfinitySymbol, Double.PositiveInfinity.ToString(), "#01");
+                       Assert.AreEqual (nfi.NegativeInfinitySymbol, Double.NegativeInfinity.ToString(), "#02");
+                       Assert.AreEqual (nfi.NaNSymbol, Double.NaN.ToString(), "#03");
+                       Assert.AreEqual (nfi.PositiveInfinitySymbol, Single.PositiveInfinity.ToString(), "#04");
+                       Assert.AreEqual (nfi.NegativeInfinitySymbol, Single.NegativeInfinity.ToString(), "#05");
+                       Assert.AreEqual (nfi.NaNSymbol, Single.NaN.ToString(), "#06");
 
-                       Assert.AreEqual ("Infinity", Double.PositiveInfinity.ToString("R"), "#07");
-                       Assert.AreEqual ("-Infinity", Double.NegativeInfinity.ToString("R"), "#08");
-                       Assert.AreEqual ("NaN", Double.NaN.ToString("R"), "#09");
-                       Assert.AreEqual ("Infinity", Single.PositiveInfinity.ToString("R"), "#10");
-                       Assert.AreEqual ("-Infinity", Single.NegativeInfinity.ToString("R"), "#11");
-                       Assert.AreEqual ("NaN", Single.NaN.ToString("R"), "#12");
+                       Assert.AreEqual (nfi.PositiveInfinitySymbol, Double.PositiveInfinity.ToString("R"), "#07");
+                       Assert.AreEqual (nfi.NegativeInfinitySymbol, Double.NegativeInfinity.ToString("R"), "#08");
+                       Assert.AreEqual (nfi.NaNSymbol, Double.NaN.ToString("R"), "#09");
+                       Assert.AreEqual (nfi.PositiveInfinitySymbol, Single.PositiveInfinity.ToString("R"), "#10");
+                       Assert.AreEqual (nfi.NegativeInfinitySymbol, Single.NegativeInfinity.ToString("R"), "#11");
+                       Assert.AreEqual (nfi.NaNSymbol, Single.NaN.ToString("R"), "#12");
                }
 
                [Test]
@@ -4366,5 +4368,41 @@ namespace MonoTests.System
                {
                        Assert.AreEqual ("", 0.0.ToString ("X99", _nfi) , "#01");
                }
+
+               [Test]
+               public void Test18000 ()
+               {
+                       string formatString = "p 00.0000\\';n 0000.00\\';0.#\\'";
+
+                       Assert.AreEqual ("p 08.3266'", 8.32663472.ToString (formatString, CultureInfo.InvariantCulture), "#1");
+                       Assert.AreEqual ("n 0001.13'", (-1.1345343).ToString (formatString, CultureInfo.InvariantCulture), "#2");
+                       Assert.AreEqual ("0'", 0.0.ToString (formatString, CultureInfo.InvariantCulture), "#3");
+               }
+
+               [Test]
+               public void TestInvariantThreading ()
+               {
+                       Thread[] th = new Thread[4];
+                       bool failed = false;
+
+                       for (int i = 0; i < th.Length; i++) {
+                               th [i] = new Thread (() => {
+                                       for (int ii = 0; ii < 100; ++ii) {
+                                               var headers = new StringBuilder ();
+                                               headers.AppendFormat (CultureInfo.InvariantCulture, "{0} {1}", 100, "ok");
+                                               if (headers.ToString () != "100 ok") {
+                                                       failed = true;
+                                               }
+                                       }
+                               });
+                               th [i].Start ();
+                       }
+
+                       foreach (Thread t in th) {
+                               t.Join ();
+                       }
+
+                       Assert.IsFalse (failed);
+               }
        }
 }