2010-05-21 Sebastien Pouliot <sebastien@ximian.com>
[mono.git] / mcs / class / System / Test / System.ComponentModel / DateTimeConverterTests.cs
index b5a5373e4ea17b434d285a3f3bc20a10b22b2dd3..8c62fe3b8d6d10169336a8165478f50bb0d2dd48 100644 (file)
@@ -62,6 +62,10 @@ namespace MonoTests.System.ComponentModel
                        Assert.AreEqual (date.Minute, newDate.Minute, "#5");
                        Assert.AreEqual (date.Second, newDate.Second, "#6");
                        Assert.AreEqual (0, newDate.Millisecond, "#7");
+
+                       newDate = (DateTime) converter.ConvertFrom (null, CultureInfo.InvariantCulture, 
+                                                                   String.Empty);
+                       Assert.AreEqual (DateTime.MinValue, newDate, "#8");
                }
 
                [Test]
@@ -95,6 +99,10 @@ namespace MonoTests.System.ComponentModel
                        Assert.AreEqual (DateTime.MaxValue.ToString (CultureInfo.InvariantCulture), 
                                converter.ConvertTo (null, CultureInfo.InvariantCulture, DateTime.MaxValue, 
                                typeof (string)), "#1");
+
+                       // FIXME: We probably shouldn't be using CurrentCulture in these tests.
+                       if (CultureInfo.CurrentCulture == CultureInfo.InvariantCulture)
+                               return;
                        Assert.AreEqual (DateTime.MaxValue.ToString (pattern, 
                                CultureInfo.CurrentCulture), converter.ConvertTo (null, 
                                CultureInfo.CurrentCulture, DateTime.MaxValue, typeof (string)),
@@ -125,6 +133,9 @@ namespace MonoTests.System.ComponentModel
                                converter.ConvertToString (null, CultureInfo.InvariantCulture, 
                                DateTime.MaxValue), "#1");
 
+                       // FIXME: We probably shouldn't be using CurrentCulture in these tests.
+                       if (CultureInfo.CurrentCulture == CultureInfo.InvariantCulture)
+                               return;
                        Assert.AreEqual (DateTime.MaxValue.ToString (pattern, CultureInfo.CurrentCulture),
                                converter.ConvertToString (null, DateTime.MaxValue), "#2");
                        Assert.AreEqual (DateTime.MaxValue.ToString (pattern, CultureInfo.CurrentCulture),
@@ -144,6 +155,31 @@ namespace MonoTests.System.ComponentModel
                        Assert.AreEqual (date.ToString (info.ShortDatePattern + " " + 
                                info.ShortTimePattern, culture), converter.ConvertToString (
                                null, culture, date));
+
+                       CultureInfo ciUS = new CultureInfo("en-US");
+                       CultureInfo ciGB = new CultureInfo("en-GB");
+                       CultureInfo ciDE = new CultureInfo("de-DE");
+                       //
+                       date = new DateTime(2008, 12, 31, 23, 59, 58, 5);
+                       DoTestToString("12/31/2008 11:59 PM", date, ciUS);
+                       DoTestToString("31/12/2008 23:59", date, ciGB);
+                       DoTestToString("31.12.2008 23:59", date, ciDE);
+                       DoTestToString("12/31/2008 23:59:58", date, CultureInfo.InvariantCulture);
+                       Assert.AreEqual("12/31/2008 23:59:58", converter.ConvertToInvariantString(date), "Invariant");
+                       //
+                       date = new DateTime(2008, 12, 31);
+                       DoTestToString("12/31/2008", date, ciUS);
+                       DoTestToString("31/12/2008", date, ciGB);
+                       DoTestToString("31.12.2008", date, ciDE);
+                       DoTestToString("2008-12-31", date, CultureInfo.InvariantCulture);
+                       Assert.AreEqual("2008-12-31", converter.ConvertToInvariantString(date), "Invariant");
+               }
+               private void DoTestToString(String expected, DateTime value, CultureInfo ci)
+               {
+                       String message = ci.Name;
+                       if (message == null || message.Length == 0)
+                               message = "?Invariant";
+                       Assert.AreEqual(expected, converter.ConvertTo(null, ci, value, typeof(String)), message);
                }
 
                [Test]