Home | History | Annotate | Download | only in idle_test
      1 '''Mock classes that imitate idlelib modules or classes.
      2 
      3 Attributes and methods will be added as needed for tests.
      4 '''
      5 
      6 from idlelib.idle_test.mock_tk import Text
      7 
      8 class Func:
      9     '''Mock function captures args and returns result set by test.
     10 
     11     Attributes:
     12     self.called - records call even if no args, kwds passed.
     13     self.result - set by init, returned by call.
     14     self.args - captures positional arguments.
     15     self.kwds - captures keyword arguments.
     16 
     17     Most common use will probably be to mock methods.
     18     Mock_tk.Var and Mbox_func are special variants of this.
     19     '''
     20     def __init__(self, result=None):
     21         self.called = False
     22         self.result = result
     23         self.args = None
     24         self.kwds = None
     25     def __call__(self, *args, **kwds):
     26         self.called = True
     27         self.args = args
     28         self.kwds = kwds
     29         if isinstance(self.result, BaseException):
     30             raise self.result
     31         else:
     32             return self.result
     33 
     34 
     35 class Editor:
     36     '''Minimally imitate editor.EditorWindow class.
     37     '''
     38     def __init__(self, flist=None, filename=None, key=None, root=None):
     39         self.text = Text()
     40         self.undo = UndoDelegator()
     41 
     42     def get_selection_indices(self):
     43         first = self.text.index('1.0')
     44         last = self.text.index('end')
     45         return first, last
     46 
     47 
     48 class UndoDelegator:
     49     '''Minimally imitate undo.UndoDelegator class.
     50     '''
     51     # A real undo block is only needed for user interaction.
     52     def undo_block_start(*args):
     53         pass
     54     def undo_block_stop(*args):
     55         pass
     56