assert d.hour == 12 assert d.minute == 13 assert d.second == 14 assert d.absdate == 733043 assert d.abstime == 43994.0 assert long(d.absdays * 1000) == 733042509L # Normalization assert DateTime(2008, 1, -1).day == 31 assert DateTime(2008, 1, -31).day == 1 assert DateTime(2008, -1, 1).month == 12 assert DateTime(2008, -12, 1).month == 1 assert DateTime(-1, 1, 1).year == -1 # .rebuild() assert id(d) != id(d.rebuild()) assert d.rebuild(year=2000) == DateTime(2000, 1, 2, 12, 13, 14) assert d.rebuild(month=11) == DateTime(2008, 11, 2, 12, 13, 14) assert d.rebuild(day=12) == DateTime(2008, 1, 12, 12, 13, 14) assert d.rebuild(hour=9) == DateTime(2008, 1, 2, 9, 13, 14) assert d.rebuild(minute=20) == DateTime(2008, 1, 2, 12, 20, 14) assert d.rebuild(second=33) == DateTime(2008, 1, 2, 12, 13, 33) assert d.rebuild(second=35.5) == DateTime(2008, 1, 2, 12, 13, 35.5) assert d.rebuild(year=2000, hour=10) == DateTime(2000, 1, 2, 10, 13, 14) ## Test DateTimeFromAbsDateTime() # wintertime t = winter = DateTimeFromAbsDateTime(729368, 55931.522913) print t print repr(t)
def test_constructors(): ## DateTime() d = DateTime(2008,1,2, 12,13,14) assert d.year == 2008 assert d.month == 1 assert d.day == 2 assert d.hour == 12 assert d.minute == 13 assert d.second == 14 assert d.absdate == 733043 assert d.abstime == 43994.0 assert long(d.absdays*1000) == 733042509L # Normalization assert DateTime(2008,1,-1).day == 31 assert DateTime(2008,1,-31).day == 1 assert DateTime(2008,-1,1).month == 12 assert DateTime(2008,-12,1).month == 1 assert DateTime(-1,1,1).year == -1 # Range errors try: DateTime(2014, 9, 31) except RangeError: pass else: raise AssertionError('DateTime(2014, 9, 31) should raise a RangeError') try: MaxDateTime + 10 except RangeError: pass else: raise AssertionError('MaxDateTime + 10 should raise a RangeError') try: MinDateTime - 10 except RangeError: pass else: raise AssertionError('MinDateTime - 10 should raise a RangeError') # .rebuild() assert id(d) != id(d.rebuild()) assert d.rebuild(year=2000) == DateTime(2000,1,2, 12,13,14) assert d.rebuild(month=11) == DateTime(2008,11,2, 12,13,14) assert d.rebuild(day=12) == DateTime(2008,1,12, 12,13,14) assert d.rebuild(hour=9) == DateTime(2008,1,2, 9,13,14) assert d.rebuild(minute=20) == DateTime(2008,1,2, 12,20,14) assert d.rebuild(second=33) == DateTime(2008,1,2, 12,13,33) assert d.rebuild(second=35.5) == DateTime(2008,1,2, 12,13,35.5) assert d.rebuild(year=2000, hour=10) == DateTime(2000,1,2, 10,13,14) ## Test DateTimeFromAbsDateTime() # wintertime t = DateTimeFromAbsDateTime(729368,55931.522913) print t print repr(t) assert str(t) == '1997-12-10 15:32:11.52' x = float(t) print 'as ticks:',x print 'time.gmtime:',time.gmtime(x),'(note the seconds)' print 'time.localtime:',time.localtime(x) print 'tuple:',t.tuple() print # summertime t = DateTimeFromAbsDateTime(729200,55931.522913) print t print repr(t) assert str(t) == '1997-06-25 15:32:11.52' x = float(t) print 'as ticks:',x print 'time.gmtime:',time.gmtime(x),'(note the seconds)' print 'time.localtime:',time.localtime(x) print 'tuple:',t.tuple() # Leap seconds try: leap_2008_0 = DateTimeFromAbsDateTime(733407, 86401.75) except RangeError: pass else: raise AssertionError('DateTimeFromAbsDateTime') leap_2008_1 = DateTimeFromAbsDateTime(733407, 86400.75) assert leap_2008_1.abstime == 86400.75 assert str(leap_2008_1) == '2008-12-31 23:59:60.75' leap_2008_2 = DateTimeFromAbsDateTime(733407, 86400.99) assert leap_2008_2.abstime == 86400.99 assert str(leap_2008_2) == '2008-12-31 23:59:60.99' leap_2008_2 = DateTimeFromAbsDateTime(733407, 86400.999) assert leap_2008_2.abstime == 86400.999 assert str(leap_2008_2) == '2008-12-31 23:59:60.99' print ## Test Timestamp() t = Timestamp(1900,1,1,12,23,34.5) print t assert t.tuple()[:6] == (1900,1,1,12,23,34) assert str(t) == '1900-01-01 12:23:34.50' ## Test DateTimeFromCOMDate() t = DateTimeFromCOMDate(12345.6) print t assert t.COMDate() == 12345.6 assert str(t) == '1933-10-18 14:24:00.00' t = DateTimeFromCOMDate(-12345.6) print t assert t.COMDate() == -12345.6 assert str(t) == '1866-03-13 14:24:00.00' ## Test DateTimeFromTicks() x = time.time() print 'ticks:',x,'localtime:',time.localtime(x) t = DateTimeFromTicks(x) print t.tuple(), t.absdate, t.abstime assert t.ticks() == x print ## Test Date() t = Date(2007,1,1) #print t assert str(t) == '2007-01-01 00:00:00.00' assert t.absdate == 732677 assert t.date == '2007-01-01' assert t.time == '00:00:00.00' # Negative days count from the month's end t = Date(2007,1,-1) #print t assert str(t) == '2007-01-31 00:00:00.00' assert t.absdate == 732707 assert t.date == '2007-01-31' assert t.time == '00:00:00.00' t = Date(2007,2,-1) #print t assert t.absdate == 732735 assert t.date == '2007-02-28' assert t.time == '00:00:00.00' ## Test now() t1 = now() time.sleep(0.1) t2 = now() if t1 == t2: print 'WARNING: now() does not provide sub-second accuracy' else: # Report now_resolution if hasattr(mx.DateTime, 'now_resolution'): print ('now() resolution reported by the system: ' '%f microseconds' % (now_resolution * 1e6)) # Test now() resolution min_t_diff = 1.0 current_time = now for i in range(1000): t1, t2 = current_time(), current_time() t_diff = abs(t2.abstime - t1.abstime) if t_diff < min_t_diff: min_t_diff = t_diff if min_t_diff > 0: print ('now() resolution measured as < %f microseconds' % (min_t_diff * 1e6)) else: print 'now() resolution cannot be determined' print print 'Basic constructors ok.'