public void TestMethodOverflow() { var datetime = DateTime.Now; UnixTime32 u32 = datetime; TimeSpan outOfRange = new TimeSpan(TimeSpan.TicksPerDay * 365 * 200); try { u32 += outOfRange; } catch (Exception ex) { Assert.AreEqual(typeof(OverflowException), ex.GetType()); } try { u32 -= outOfRange; } catch (Exception ex) { Assert.AreEqual(typeof(OverflowException), ex.GetType()); } for (int i = -9; i < 10; i++) { DateTime check = new DateTime(1970, 1, 1) + TimeSpan.FromSeconds((uint.MaxValue + 1L) * i); Assert.AreEqual(check, UnixTime32.Convert(0, DateTimeKind.Local, i)); Assert.AreEqual(check, UnixTime32.Convert(0, DateTimeKind.Utc, i)); Assert.AreEqual(check, UnixTime32.Convert(0, DateTimeKind.Unspecified, i)); } for (int i = -9; i < 10; i++) { TimeSpan zone = new TimeSpan(2, 0, 0); DateTime check = new DateTime(1970, 1, 1) + TimeSpan.FromSeconds((uint.MaxValue + 1L) * i) - zone; Assert.AreEqual(check, UnixTime32.ConvertToUTC(0, zone, i)); Assert.AreEqual(check, UnixTime32.ConvertToUTC(0, zone, i)); Assert.AreEqual(check, UnixTime32.ConvertToUTC(0, zone, i)); } }