using System;
using System.Globalization;
using System.Threading;
+using System.Text;
using NUnit.Framework;
[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]
{
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);
+ }
}
}