Пример #1
0
        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));
            }
        }