Beispiel #1
0
        public void TestMethodOverflow()
        {
            var        datetime = DateTime.Now;
            UnixTime64 ut       = datetime;

            try
            {
                ut += long.MaxValue;
            }
            catch (Exception ex)
            {
                Assert.AreEqual(typeof(OverflowException), ex.GetType());
            }
            try
            {
                ut -= long.MaxValue;
            }
            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, UnixTime64.Convert(0, DateTimeKind.Local, i));
                Assert.AreEqual(check, UnixTime64.Convert(0, DateTimeKind.Utc, i));
                Assert.AreEqual(check, UnixTime64.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, UnixTime64.ConvertToUTC(0, zone, i));
                Assert.AreEqual(check, UnixTime64.ConvertToUTC(0, zone, i));
                Assert.AreEqual(check, UnixTime64.ConvertToUTC(0, zone, i));
            }
        }