Merge pull request #1541 from alexrp/mcs-build-cleanup
[mono.git] / mcs / class / corlib / Test / System / DateTimeOffsetTest.cs
index 5846853a364caf76cb9ee2fa6b74bc648bff9431..13564426aedd1f1d97233268301b6a3c4217ae98 100644 (file)
@@ -82,18 +82,6 @@ namespace MonoTests.System {
                        new DateTimeOffset (dt, offset);
                }
 
-               [Test]
-               [Category ("Martin")]
-               public void MinValueToUniversal ()
-               {
-                       DateTime dt = new DateTime (0);
-                       var utc = dt.ToUniversalTime ();
-                       var tz = TimeZone.CurrentTimeZone;
-                       var text = string.Format ("TIME: {0} {1} - {2} {3} - {4} {5} {6}", dt.Ticks, dt.Kind,
-                               DateTime.Now, DateTime.UtcNow, tz, tz.GetUtcOffset (dt), tz.GetUtcOffset (DateTime.Now));
-                       Assert.AreEqual (0, utc.Ticks, text);
-               }
-
                [Test]
                public void CompareTwoDateInDiffTZ ()
                {
@@ -175,7 +163,7 @@ namespace MonoTests.System {
                        Assert.AreEqual (dto.ToString ("r", new CultureInfo ("en-us")), dto.ToString ("R", new CultureInfo ("en-us")));
                        Assert.AreEqual ("2007-10-31T21:00:00", dto.ToString ("s", new CultureInfo ("en-us")));
                        Assert.AreEqual ("2007-11-01 05:00:00Z", dto.ToString ("u", new CultureInfo ("en-us")));
-                       Assert.AreEqual ("October, 2007", dto.ToString ("Y", new CultureInfo ("en-us")));
+                       Assert.AreEqual ("October 2007", dto.ToString ("Y", new CultureInfo ("en-us")));
                        Assert.AreEqual (dto.ToString ("y", new CultureInfo ("en-us")), dto.ToString ("Y", new CultureInfo ("en-us")));
                }
 
@@ -188,7 +176,7 @@ namespace MonoTests.System {
                                Assert.AreEqual ("Thursday, Nov 01 2007 09:00:00 -07:00", dto.ToString (format, null as DateTimeFormatInfo), "ts1");
                        Assert.AreEqual ("Thursday, Nov 01 2007 09:00:00 -07:00", dto.ToString (format, CultureInfo.InvariantCulture), "ts2");
                        Assert.AreEqual ("jeudi, nov. 01 2007 09:00:00 -07:00", dto.ToString (format, new CultureInfo ("fr-FR")), "ts3");
-                       Assert.AreEqual ("jueves, nov 01 2007 09:00:00 -07:00", dto.ToString (format, new CultureInfo ("es-ES")), "ts4");
+                       Assert.AreEqual ("jueves, Nov. 01 2007 09:00:00 -07:00", dto.ToString (format, new CultureInfo ("es-ES")), "ts4");
                }
 
                [Test]
@@ -680,6 +668,60 @@ namespace MonoTests.System {
                        Assert.AreEqual (dto.Offset, dto2.Offset);
                        Assert.AreEqual (dt.AddDays (-60), dto2.DateTime);
                }
+
+               [Test]
+               public void TestPartialDateTimeParsing ()
+               {
+                       var now = DateTime.Now;
+                       const DateTimeStyles style = DateTimeStyles.AssumeUniversal;
+
+                       //year
+                       var date = DateTimeOffset.ParseExact ("2003", "yyyy", CultureInfo.InvariantCulture, style);
+                       var expected = "01/01/2003 00:00:00 +00:00";
+                       Assert.AreEqual (expected, date.ToString (CultureInfo.InvariantCulture));
+
+                       //month
+                       date = DateTimeOffset.ParseExact ("12", "MM", CultureInfo.InvariantCulture, style);
+                       expected = string.Format ("12/01/{0} 00:00:00 +00:00", now.Year);
+                       Assert.AreEqual (expected, date.ToString (CultureInfo.InvariantCulture));
+
+                       //day
+                       date = DateTimeOffset.ParseExact ("29", "dd", CultureInfo.InvariantCulture, style);
+                       expected = string.Format ("01/29/{0} 00:00:00 +00:00", now.Year);
+                       Assert.AreEqual (expected, date.ToString (CultureInfo.InvariantCulture));
+
+                       //hours
+                       date = DateTimeOffset.ParseExact ("06", "HH", CultureInfo.InvariantCulture, style);
+                       expected = string.Format ("{0:D2}/{1:D2}/{2} 06:00:00 +00:00", now.Month, now.Day, now.Year);
+                       Assert.AreEqual (expected, date.ToString (CultureInfo.InvariantCulture));
+
+                       //minutes
+                       date = DateTimeOffset.ParseExact ("45", "mm", CultureInfo.InvariantCulture, style);
+                       expected = string.Format ("{0:D2}/{1:D2}/{2} 00:45:00 +00:00", now.Month, now.Day, now.Year);
+                       Assert.AreEqual (expected, date.ToString (CultureInfo.InvariantCulture));
+
+                       //seconds
+                       date = DateTimeOffset.ParseExact ("45", "ss", CultureInfo.InvariantCulture, style);
+                       expected = string.Format ("{0:D2}/{1:D2}/{2} 00:00:45 +00:00", now.Month, now.Day, now.Year);
+                       Assert.AreEqual (expected, date.ToString (CultureInfo.InvariantCulture));
+               }
+
+               [Test]
+               public void TestDateOnlyWithTimeOffset ()
+               {
+                       var fp = CultureInfo.InvariantCulture;
+                       var date = DateTimeOffset.Parse("2013-11-07+11:00", fp, DateTimeStyles.AssumeUniversal);
+                       var expected = string.Format ("{0:D2}/{1:D2}/{2} 00:00:00 +11:00", 11, 7, 2013);
+                       Assert.AreEqual (expected, date.ToString (CultureInfo.InvariantCulture));
+               }
+
+               [Test]
+               public void GMTDateTime ()
+               {
+                       var date = DateTimeOffset.Parse ("Wed, 10 Sep 2014 22:01:40 GMT", CultureInfo.InvariantCulture);
+                       var expected = "09/10/2014 22:01:40 +00:00";
+                       Assert.AreEqual (expected, date.ToString (CultureInfo.InvariantCulture));
+               }
        }
 }