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

contrib/opal/ZSI/test/wsdl2py/test_Attributes.py

00001 #!/usr/bin/env python
00002 ############################################################################
00003 # Joshua R. Boverhof, LBNL
00004 # See LBNLCopyright for copyright notice!
00005 ###########################################################################
00006 import os, sys, unittest, time
00007 from ServiceTest import main, ServiceTestCase, ServiceTestSuite
00008 from ZSI import FaultException
00009 from ZSI.TC import _get_global_element_declaration as GED
00010 from ZSI.writer import SoapWriter
00011 from ZSI.parse import ParsedSoap
00012 
00013 """
00014 Unittest for Bug Report 
00015 [ ] 
00016 
00017 XSD: test_Attributes.xsd  
00018 """
00019 
00020 # General targets
00021 def dispatch():
00022     """Run all dispatch tests"""
00023     suite = ServiceTestSuite()
00024     suite.addTest(unittest.makeSuite(AttributeTestCase, 'test_dispatch'))
00025     return suite
00026 
00027 def local():
00028     """Run all local tests"""
00029     suite = ServiceTestSuite()
00030     suite.addTest(unittest.makeSuite(AttributeTestCase, 'test_local'))
00031     return suite
00032 
00033 def net():
00034     """Run all network tests"""
00035     suite = ServiceTestSuite()
00036     suite.addTest(unittest.makeSuite(AttributeTestCase, 'test_net'))
00037     return suite
00038     
00039 def all():
00040     """Run all tests"""
00041     suite = ServiceTestSuite()
00042     suite.addTest(unittest.makeSuite(AttributeTestCase, 'test_'))
00043     return suite
00044 
00045 
00046 class AttributeTestCase(ServiceTestCase):
00047     name = "test_Attributes"
00048     types_file_name = "test_Attributes_xsd_types.py"
00049 
00050     def __init__(self, methodName):
00051         ServiceTestCase.__init__(self, methodName)
00052         self.wsdl2py_args.append('-b')
00053         self.wsdl2py_args.append('-x')
00054 
00055     def test_local_attribute1(self):
00056         """
00057         """
00058         myDouble = 4.5
00059         myInt = 9
00060         myFloat = 3.0001
00061         myDecimal = 8.999
00062         myGDateTime = time.gmtime()
00063         myAnyURI = "urn:whatever"
00064         myQName = ("urn:test", "qbert")
00065         myString = "whatever"
00066         myHexBinary = hex(888)
00067 
00068         pyobj = GED("urn:example", "Test1").pyclass()
00069         # Test serialize/parse
00070         pyobj.set_attribute_myDecimal(myDecimal)
00071         pyobj.set_attribute_myDouble(myDouble)
00072         pyobj.set_attribute_myFloat(myFloat)
00073         pyobj.set_attribute_myInt(myInt)
00074         pyobj.set_attribute_myDateTime(myGDateTime)
00075 
00076         pyobj.set_attribute_myGDay(myGDateTime)
00077         pyobj.set_attribute_myGMonth(myGDateTime)
00078         pyobj.set_attribute_myGYear(myGDateTime)
00079         pyobj.set_attribute_myGYearMonth(myGDateTime)
00080         pyobj.set_attribute_myDate(myGDateTime)
00081         pyobj.set_attribute_myTime(myGDateTime)
00082 
00083         pyobj.set_attribute_myAnyURI(myAnyURI)
00084         pyobj.set_attribute_myString(myString)
00085         pyobj.set_attribute_myHexBinary(myHexBinary)
00086         pyobj.set_attribute_myDuration(myGDateTime)
00087 
00088         # Problems parsings 
00089         pyobj.set_attribute_myQName(myQName)
00090         pyobj.set_attribute_myGMonthDay(myGDateTime)
00091 
00092 
00093         #TODO:
00094         #pyobj.set_attribute_myBase64Binary("")
00095         #pyobj.set_attribute_myNOTATION("NOT")
00096 
00097         sw = SoapWriter()
00098         sw.serialize(pyobj)
00099         soap = str(sw)
00100  
00101         ps = ParsedSoap(soap)
00102         pyobj2 = ps.Parse(pyobj.typecode)
00103 
00104         test = pyobj2.get_attribute_myInt()
00105         self.failUnlessEqual(myInt, test)
00106 
00107         test = pyobj2.get_attribute_myDouble()
00108         self.failUnlessEqual(myDouble, test)
00109 
00110         test = pyobj2.get_attribute_myFloat()
00111         self.failUnlessEqual(myFloat, test)
00112 
00113         test = pyobj2.get_attribute_myDecimal()
00114         self.failUnlessEqual(myDecimal, test)
00115 
00116         test = pyobj2.get_attribute_myAnyURI()
00117         self.failUnlessEqual(myAnyURI, test)
00118 
00119         test = pyobj2.get_attribute_myQName()
00120         self.failUnlessEqual(myQName, test)
00121 
00122         test = pyobj2.get_attribute_myString()
00123         self.failUnlessEqual(myString, test)
00124 
00125         test = pyobj2.get_attribute_myHexBinary()
00126         self.failUnlessEqual(myHexBinary, test)
00127 
00128         # DateTime stuff
00129         test = pyobj2.get_attribute_myDateTime()
00130         self.failUnlessEqual(myGDateTime[:-3], test[:-3])
00131 
00132         test = pyobj2.get_attribute_myDate()
00133         self.failUnlessEqual(myGDateTime[:3], test[:3])
00134 
00135         test = pyobj2.get_attribute_myTime()
00136         self.failUnlessEqual(myGDateTime[4:5], test[4:5])
00137 
00138         test = pyobj.get_attribute_myDuration()
00139         self.failUnlessEqual(myGDateTime, test)
00140 
00141         # Bug [ 1453421 ] Incorrect format for type gDay
00142         test = pyobj2.get_attribute_myGDay()
00143         self.failUnlessEqual(myGDateTime[2], test[2])
00144 
00145         test = pyobj2.get_attribute_myGMonth()
00146         self.failUnlessEqual(myGDateTime[1], test[1])
00147 
00148         test = pyobj2.get_attribute_myGYear()
00149         self.failUnlessEqual(myGDateTime[0], test[0])
00150 
00151         test = pyobj2.get_attribute_myGYearMonth()
00152         self.failUnlessEqual(myGDateTime[:2], test[:2])
00153 
00154         # hmm? negated?
00155         #test = pyobj2.get_attribute_myGMonthDay()
00156         #self.failUnlessEqual(myGDateTime[1:3], test[1:3])
00157 
00158     def test_local_empty_attribute(self):
00159         # [ 1452752 ] attribute with empty value doesn't appear in parsed object
00160         myString = ""
00161         pyobj = GED("urn:example", "Test1").pyclass()
00162         pyobj.set_attribute_myString(myString)
00163 
00164         sw = SoapWriter()
00165         sw.serialize(pyobj)
00166         soap = str(sw)
00167  
00168         print soap
00169         ps = ParsedSoap(soap)
00170         pyobj2 = ps.Parse(pyobj.typecode)
00171 
00172         test = pyobj2.get_attribute_myString() 
00173         self.failUnlessEqual(myString, str(test))
00174 
00175 
00176 if __name__ == "__main__" :
00177     main()
00178 

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