#!/usr/bin/env python import unittest, sys from ZSI import * class t2TestCase(unittest.TestCase): "Test case wrapper for old ZSI t2 test case" def checkt2(self): try: ps = ParsedSoap(IN) except ParseException, e: print >>OUT, FaultFromZSIException(e).AsSOAP() self.fail() except Exception, e: # Faulted while processing; assume it's in the # header. print >>OUT, FaultFromException(e, 1).AsSOAP() self.fail() # We are not prepared to handle any actors or mustUnderstand elements. # Arbitrary fault back with the first one found. a = ps.WhatActorsArePresent() if len(a): print >>OUT, FaultFromActor(a[0]).AsSOAP() self.fail() mu = ps.WhatMustIUnderstand() if len(mu): uri, localname = mu[0] print >>OUT, FaultFromNotUnderstood(uri, localname).AsSOAP() self.fail() try: player = ps.Parse(Player) except EvaluateException, e: print >>OUT, FaultFromZSIException(e).AsSOAP() self.fail() try: import operator total = reduce(operator.add, player.Scores, 0) result = Average(foo(total, len(player.Scores))) sw = SoapWriter().serialize(result) print >>OUT, str(sw) except Exception, e: print >>OUT, FaultFromException(e, 0, sys.exc_info()[2]).AsSOAP() self.fail() def makeTestSuite(): suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(t2TestCase, "check")) return suite class Player: '''Input class.''' def __init__(self, name=None): pass Player.typecode = TC.Struct(Player, [ TC.String('Name', optional=1), TC.Array('xsd:integer', TC.Integer(), 'Scores'), ], 'GetAverage') class Average: '''Output class.''' def __init__(self, average): self.average = average Average.typecode = TC.Struct(Average, [ TC.Integer('average'), ], 'GetAverageResponse', inline=1) def bar(total, len): return total / len def foo(total, len): return bar(total, len) OUT = sys.stdout IN=''' 84 101 200 4 John Doe ''' def main(): unittest.main(defaultTest="makeTestSuite") if __name__ == "__main__" : main()