• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

contrib/opal/ZSI/test/test_TCtimes.py

00001 #!/usr/bin/env python
00002 import unittest, sys, tests_good, tests_bad, time
00003 from ZSI import *
00004 try:
00005     import cStringIO as StringIO
00006 except ImportError:
00007     import StringIO
00008 
00009 
00010 class TestCase(unittest.TestCase):
00011     '''Examples from "Definitive XML Schema, Priscilla Walmsley, p237-246
00012     '''
00013     def check_dateTime_local_offset(self):
00014         # UTC with local timezone offset
00015         # 
00016         typecode = TC.gDateTime()
00017         off_hour = time.altzone/60/60
00018         off_min = time.altzone%60
00019         stamp_offset = '1968-04-02T13:20:00+%02d:%02d' %(off_hour,off_min)
00020         data = typecode.text_to_data(stamp_offset, None, None)
00021         stamp = typecode.get_formatted_content(data)
00022 
00023         correct = "1968-04-01T22:20:00Z"
00024         self.failUnless(stamp == correct, 
00025             'dateTime with local offset(%s), expecting "%s" got "%s"' %(
00026             stamp_offset, correct, stamp))
00027 
00028     def check_valid_dateTime(self):
00029         typecode = TC.gDateTime()
00030         for i in ('1968-04-02T13:20:00', '1968-04-02T13:20:15.5', 
00031             '1968-04-02T13:20:00-05:00', '1968-04-02T13:20:00Z'):
00032             data = typecode.text_to_data(i, None, None)
00033             text = typecode.get_formatted_content(data)
00034 
00035     def check_parse_microseconds(self):
00036         good = (1968, 4, 2, 13, 20, 15, 511, 0, 0)
00037         typecode = TC.gDateTime()
00038         data = typecode.text_to_data('1968-04-02T13:20:15.511', None, None)
00039         self.failUnless(data == good,
00040             'did not parse something %s, not equal %s' %(data,good))
00041 
00042     def check_serialize_microseconds(self):
00043         dateTime = '1968-04-02T13:20:15.511Z'
00044         typecode = TC.gDateTime()
00045         text = typecode.get_formatted_content((1968, 4, 2, 13, 20, 15, 511, 0, 0))
00046         self.failUnless(text == dateTime,
00047             'did not serialze correctly %s, not equal %s' %(text, dateTime))
00048 
00049     def check_serialize_microseconds_1000(self):
00050         bad = (1968, 4, 2, 13, 20, 15, 1000, 0)
00051         typecode = TC.gDateTime()
00052         self.failUnlessRaises(ValueError, typecode.get_formatted_content, bad)
00053 
00054     def check_serialize_microseconds_lessZero(self):
00055         '''ignore negative microseconds
00056         '''
00057         bad = (1968, 4, 2, 13, 20, 15, -1, 0)
00058         typecode = TC.gDateTime()
00059         text = typecode.get_formatted_content(bad)
00060         typecode.get_formatted_content(bad)
00061 
00062     def check_parse_microseconds2(self):
00063         good = (1968, 4, 2, 13, 20, 15, 500, 0, 0)
00064         typecode = TC.gDateTime()
00065         data = typecode.text_to_data('1968-04-02T13:20:15.5Z', None,None)
00066         self.failUnless(data == good,
00067             'did not serialze correctly %s, not equal %s' %(data, good))
00068 
00069         #text = typecode.get_formatted_content((1968, 4, 2, 13, 20, 15, 5, 0, 500))
00070         #self.failUnless(text == dateTime,
00071         #    'did not serialze correctly %s, not equal %s' %(text, dateTime))
00072 
00073     def check_invalid_dateTime(self):
00074         typecode = TC.gDateTime()
00075 
00076     def check_valid_time(self):
00077         typecode = TC.gTime()
00078         for i in ('13:20:00', '13:20:30.5555', '13:20:00Z'):
00079             data = typecode.text_to_data(i, None, None)
00080             text = typecode.get_formatted_content(data)
00081 
00082     def broke_valid_time(self):
00083         typecode = TC.gTime()
00084         data = typecode.text_to_data('13:20:00-05:00', None, None)
00085 
00086     def check_invalid_time(self):
00087         typecode = TC.gTime()
00088         for i in ('5:20:00', '13:20.5:00',):
00089             self.failUnlessRaises(Exception, typecode.text_to_data, i, None, None),
00090 
00091     def broke_invalid_time_no_seconds(self):
00092         typecode = TC.gTime()
00093         i = '13:20:'
00094         self.failUnlessRaises(Exception, typecode.text_to_data, i, None, None)
00095 
00096     def broke_invalid_time_bad_timeofday(self):
00097         typecode = TC.gTime()
00098         i = '13:65:00'
00099         self.failUnlessRaises(Exception, typecode.text_to_data, i, None, None)
00100 
00101     def check_valid_date(self):
00102         typecode = TC.gDate()
00103         for i in ('1968-04-02', '-0045-01-01', '11968-04-02', '1968-04-02+05:00', '1968-04-02Z'):
00104             data = typecode.text_to_data(i, None, None)
00105             text = typecode.get_formatted_content(data)
00106 
00107     def check_invalid_date(self):
00108         typecode = TC.gDate()
00109         for i in ('68-04-02', '1968-4-2', '1968/04/02', '04-02-1968',):
00110             self.failUnlessRaises(Exception, typecode.text_to_data, i, None, None),
00111 
00112     def broke_invalid_date_april31(self):
00113         # No checks for valid date April 30 days
00114         typecode = TC.gDate()
00115         self.failUnlessRaises(Exception, typecode.text_to_data, '1968-04-31', None, None),
00116 
00117 #
00118 # Creates permutation of test options: "check", "check_any", etc
00119 #
00120 _SEP = '_'
00121 for t in [i[0].split(_SEP) for i in filter(lambda i: callable(i[1]), TestCase.__dict__.items())]:
00122     test = ''
00123     for f in t:
00124         test += f
00125         if globals().has_key(test): test += _SEP; continue
00126         def _closure():
00127             name = test
00128             def _makeTestSuite():
00129                 suite = unittest.TestSuite()
00130                 suite.addTest(unittest.makeSuite(TestCase, name))
00131                 return suite
00132             return _makeTestSuite
00133 
00134         globals()[test] = _closure()
00135         test += _SEP
00136 
00137 
00138 makeTestSuite = check
00139 def main():
00140     unittest.main(defaultTest="makeTestSuite")
00141 if __name__ == "__main__" : main()
00142 
00143 

Generated on Wed Oct 20 2010 11:12:16 for APBS by  doxygen 1.7.2