Package Products :: Package ZenUtils :: Module mock |
[hide private]
[frames] | no frames]

# Source Code for Module Products.ZenUtils.mock

     1  ###########################################################################
     2  #
     3  # This program is part of Zenoss Core, an open source monitoring platform.
     4  # Copyright (C) 2009, 2010, Zenoss Inc.
     5  #
     6  # This program is free software; you can redistribute it and/or modify it
     7  # under the terms of the GNU General Public License version 2 as published by
     8  # the Free Software Foundation.
     9  #
    10  # For complete information please visit: http://www.zenoss.com/oss/
    11  #
    12  ###########################################################################
    13
    14 -class MockObject(object):
    15      """
    16      An object that takes a hashmap and uses it for the attributes on
    17      the object.  Setting attributes is ignored.  Retrieving an
    18      unknown attribute returns an empty MockObject.  The key 'return__' is
    19      special in that its corresponding value will be returned if the object
    20      is called as a function.
    21
    22      >>> a=MockObject(b='c')
    23      >>> a.b
    24      'c'
    25      >>> a.d
    26      {}
    27      >>> a.d.e
    28      {}
    29      >>> x=MockObject(return__=5)
    30      >>> y=MockObject(z=x)
    31      >>> y.z()
    32      5
    33      """
    34 -    def __call__(self, *args, **kw):
    35          return self.attrs.get( 'return__', None )
    36
    37 -    def __init__(self, **kw):
    38          self.attrs = kw.copy()
    39
    40 -    def __getattr__(self, item):
    41          if item == 'attrs':
    42              return self.__dict__['attrs']
    43
    44          try:
    45              return self.attrs[item]
    46          except KeyError:
    47              return MockObject()
    48
    49 -    def __repr__(self):
    50          return str(self.attrs)
    51
    52 -    def __str__(self):
    53          return self.__repr__()
    54