mirror of https://github.com/python/cpython
56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
'''Mock classes that imitate idlelib modules or classes.
|
|
|
|
Attributes and methods will be added as needed for tests.
|
|
'''
|
|
|
|
from idlelib.idle_test.mock_tk import Text
|
|
|
|
class Func:
|
|
'''Mock function captures args and returns result set by test.
|
|
|
|
Attributes:
|
|
self.called - records call even if no args, kwds passed.
|
|
self.result - set by init, returned by call.
|
|
self.args - captures positional arguments.
|
|
self.kwds - captures keyword arguments.
|
|
|
|
Most common use will probably be to mock methods.
|
|
Mock_tk.Var and Mbox_func are special variants of this.
|
|
'''
|
|
def __init__(self, result=None):
|
|
self.called = False
|
|
self.result = result
|
|
self.args = None
|
|
self.kwds = None
|
|
def __call__(self, *args, **kwds):
|
|
self.called = True
|
|
self.args = args
|
|
self.kwds = kwds
|
|
if isinstance(self.result, BaseException):
|
|
raise self.result
|
|
else:
|
|
return self.result
|
|
|
|
|
|
class Editor:
|
|
'''Minimally imitate editor.EditorWindow class.
|
|
'''
|
|
def __init__(self, flist=None, filename=None, key=None, root=None):
|
|
self.text = Text()
|
|
self.undo = UndoDelegator()
|
|
|
|
def get_selection_indices(self):
|
|
first = self.text.index('1.0')
|
|
last = self.text.index('end')
|
|
return first, last
|
|
|
|
|
|
class UndoDelegator:
|
|
'''Minimally imitate undo.UndoDelegator class.
|
|
'''
|
|
# A real undo block is only needed for user interaction.
|
|
def undo_block_start(*args):
|
|
pass
|
|
def undo_block_stop(*args):
|
|
pass
|