text: import sys
  import unittest
  import pythoncom
  from win32com.client import Dispatch
  from win32com.client.gencache import EnsureDispatch
  
  
  class PippoTester(unittest.TestCase):
      def setUp(self):
          from win32com.test.util import RegisterPythonServer
          from win32com.test import pippo_server
  
          RegisterPythonServer(pippo_server.__file__, "Python.Test.Pippo")
          # create it.
          self.object = Dispatch("Python.Test.Pippo")
  
      def testLeaks(self):
          try:
              gtrc = sys.gettotalrefcount
          except AttributeError:
              print("Please run this with python_d for leak tests")
              gtrc = lambda: 0
          # note creating self.object() should have consumed our "one time" leaks
          self.object.Method1()
          start = gtrc()
          for i in range(1000):
              object = Dispatch("Python.Test.Pippo")
              object.Method1()
          object = None
          end = gtrc()
          if end - start > 5:
              self.fail("We lost %d references!" % (end - start,))
  
      def testResults(self):
          rc, out1 = self.object.Method2(123, 111)
          self.assertEqual(rc, 123)
          self.assertEqual(out1, 222)
  
      def testPythonArrays(self):
          self._testArray([-3, -2, -1, 0, 1, 2, 3])
          self._testArray([-3.14, -2, -0.1, 0.0, 1.1, 2.5, 3])
  
      def testNumpyArrays(self):
          try:
              import numpy
          except:
              print("Numpy test not possible because numpy module failed to import")
              return
          self._testArray(numpy.array([-3, -2, -1, 0, 1, 2, 3]))
          self._testArray(numpy.array([-3.14, -2, -0.1, 0.0, 1.1, 2.5, 3]))
  
      def testByteArrays(self):
          if "bytes" in dir(__builtins__):
              # Use eval to avoid compilation error in Python 2.
              self._testArray(eval("b'abcdef'"))
              self._testArray(eval("bytearray(b'abcdef')"))
  
      def _testArray(self, inArray):
          outArray = self.object.Method3(inArray)
          self.assertEqual(list(outArray), list(inArray))
  
      def testLeaksGencache(self):
          try:
              gtrc = sys.gettotalrefcount
          except AttributeError:
              print("Please run this with python_d for leak tests")
              gtrc = lambda: 0
          # note creating self.object() should have consumed our "one time" leaks
          object = EnsureDispatch("Python.Test.Pippo")
          start = gtrc()
          for i in range(1000):
              object = EnsureDispatch("Python.Test.Pippo")
              object.Method1()
          object = None
          end = gtrc()
          if end - start > 10:
              self.fail("We lost %d references!" % (end - start,))
  
  
  if __name__ == "__main__":
      unittest.main()
  