def execute(self, textview, sender): from editxt.commandbase import Options from editxt.wraplines import WrapLinesController, wrap_selected_lines opts = Options() ctl = WrapLinesController.shared_controller() opts.wrap_column = const.DEFAULT_RIGHT_MARGIN opts.indent = ctl.opts.indent wrap_selected_lines(textview, opts)
def test(c): m = Mocker() opts = "<options>" tv = m.mock(TextView) ts = tv.textStorage() >> m.mock(NSTextStorage) wrap = m.replace(wraplines) iterlines = m.replace("editxt.wraplines.iterlines") text = tv.string() >> NSString.stringWithString_(c.text) sel = (0, len(text)) if c.sel is None else c.sel sel = text.lineRangeForRange_(tv.selectedRange() >> sel) eol = tv.doc_view.document.eol >> m.mock() lines = iterlines(text, sel) >> "<lines>" eol.join(wrap(lines, opts, tv) >> [c.result]) >> c.result tv.shouldChangeTextInRange_replacementString_(sel, c.result) >> True output = [] def callback(range, text): output.append(text) expect(ts.replaceCharactersInRange_withString_(sel, c.result)).call(callback) tv.didChangeText() tv.setSelectedRange_((sel[0], len(c.result))) with m: wrap_selected_lines(tv, opts) eq_(c.result, output[0])