Merge pull request #3522 from henricm/fix-csharp-compiler-path-windows
[mono.git] / mcs / class / corlib / Test / System / DateTimeTest.cs
index 5a45d64493050b13161728a1daeeae89d3b3de51..ae383e310dd76adc68a779e9969f1df4c7e0ffe5 100644 (file)
@@ -232,6 +232,7 @@ namespace MonoTests.System
                
                [Test]
                [ExpectedException (typeof (ArgumentOutOfRangeException))]
+               [Category("MobileNotWorking")]
                public void AddHoursOutOfRangeException1 ()
                {
                        DateTime t1 = new DateTime (myTicks [1]);
@@ -240,6 +241,7 @@ namespace MonoTests.System
 
                [Test]
                [ExpectedException (typeof (ArgumentOutOfRangeException))]
+               [Category("MobileNotWorking")]
                public void AddHoursOutOfRangeException2 ()
                {
                        DateTime t1 = new DateTime (myTicks [1]);
@@ -1294,6 +1296,21 @@ namespace MonoTests.System
                        }
                }
 
+               [Test]
+               public void Parse_SameTimeAndDateSeparator ()
+               {
+                       var fiFI = (CultureInfo) CultureInfo.GetCultureInfo("fi-FI").Clone();
+
+                       fiFI.DateTimeFormat.TimeSeparator = fiFI.DateTimeFormat.DateSeparator;
+
+                       var dt = DateTime.Parse("4.3.2010", fiFI);
+
+                       Assert.AreEqual (2010, dt.Year, "#1");
+                       Assert.AreEqual (3, dt.Month, "#2");
+                       Assert.AreEqual (4, dt.Day, "#3");
+               }
+
+
                [Test]
                [ExpectedException (typeof (FormatException))]
                public void Parse_RequireSpaceSeparator ()
@@ -2627,5 +2644,28 @@ namespace MonoTests.System
                        Assert.AreEqual (2, res.Year, "#1");
                        Assert.AreEqual (12, res.Month, "#2");                  
                }
+
+               [Test]
+               [SetCulture ("en-us")]
+               public void ToUniversalTime_TimeZoneOffsetShouldNotOverflow ()
+               {
+                       var m = DateTime.MaxValue;
+                       var res = m.ToUniversalTime ();
+
+                       // It does not matter which time zone but we should never overflow or have DateTime.MinValue
+                       Assert.AreEqual (9999, res.Year, "#1");
+                       Assert.AreEqual (12, res.Month, "#2");
+                       Assert.AreEqual (31, res.Day, "#3");
+                       Assert.AreEqual (DateTimeKind.Utc, res.Kind, "#4");
+
+                       m = DateTime.MinValue;
+                       res = m.ToUniversalTime ();
+
+                       // It does not matter which time zone but we should never overflow or have DateTime.MinValue
+                       Assert.AreEqual (1, res.Year, "#10");
+                       Assert.AreEqual (1, res.Month, "#11");
+                       Assert.AreEqual (1, res.Day, "#12");
+                       Assert.AreEqual (DateTimeKind.Utc, res.Kind, "#13");
+               }
        }
 }