def do(m, c, fc, sender): beep = m.replace(ak, 'NSBeep') dobeep = True tv = m.replace(fc.finder, 'find_target')() >> (m.mock(TextView) if c.has_tv else None) if c.has_tv: options = m.replace(fc.finder, "options") rtext = options.replace_text >> "abc" options.regular_expression >> c.regex FoundRange = make_found_range_factory(FindOptions(regular_expression=False)) if c.regex: if c.rfr: tv._Finder__recently_found_range >> FoundRange(None) elif c.rfr is None: expect(tv._Finder__recently_found_range).throw(AttributeError) else: tv._Finder__recently_found_range >> None range = tv.selectedRange() >> m.mock() tv.shouldChangeTextInRange_replacementString_(range, rtext) >> c.act if c.act: tv.textStorage().replaceCharactersInRange_withString_(range, rtext) tv.didChangeText() tv.setNeedsDisplay_(True) dobeep = False if dobeep: beep()
def do(m, c, fc, sender): beep = m.replace(ak, 'NSBeep') dobeep = True tv = m.replace(fc.finder, 'find_target')() >> (m.mock(TextView) if c.has_tv else None) if c.has_tv: options = m.replace(fc.finder, "options") rtext = options.replace_text >> "abc" options.regular_expression >> c.regex FoundRange = make_found_range_factory( FindOptions(regular_expression=False)) if c.regex: if c.rfr: tv._Finder__recently_found_range >> FoundRange(None) elif c.rfr is None: expect( tv._Finder__recently_found_range).throw(AttributeError) else: tv._Finder__recently_found_range >> None range = tv.selectedRange() >> m.mock() tv.shouldChangeTextInRange_replacementString_(range, rtext) >> c.act if c.act: tv.textStorage().replaceCharactersInRange_withString_( range, rtext) tv.didChangeText() tv.setNeedsDisplay_(True) dobeep = False if dobeep: beep()
def test(c): m = Mocker() fc = FindController.shared_controller() beep = m.replace(ak, 'NSBeep') dobeep = True tv = m.replace(fc.finder, 'find_target')() >> (m.mock(TextView) if c.has_tv else None) options = m.replace(fc.finder, "options") ftext = options.find_text >> c.ftext range = ( tv.selectedRange() >> fn.NSRange(*c.sel)) if c.has_tv else None if c.has_tv and c.ftext and ((c.sel_only and c.sel[1] > 0) or not c.sel_only): text = tv.string() >> c.text if not c.sel_only: if (options.wrap_around >> c.wrap): range = fn.NSMakeRange(0, 0) else: range = fn.NSMakeRange(range[0], len(text) - range[0]) if options.regular_expression >> c.regex: finditer = m.method(fc.finder.regexfinditer) elif options.match_entire_word >> c.mword: ftext = "\\b" + re.escape(ftext) + "\\b" finditer = m.method(fc.finder.regexfinditer) else: finditer = m.method(fc.finder.simplefinditer) rtext = options.replace_text >> c.rtext found = None ranges = [] rtexts = [] items = [] FoundRange = make_found_range_factory( FindOptions(regular_expression=c.regex, match_entire_word=c.mword)) for r in c.ranges: found = FoundRange(fn.NSMakeRange(*r)) if ranges: rtexts.append(text[sum(ranges[-1]):r[0]]) ranges.append(found.range) rtexts.append(rtext) items.append(found) finditer(text, ftext, range, FORWARD, False) >> items if ranges: start = c.ranges[0][0] range = fn.NSMakeRange(start, sum(c.ranges[-1]) - start) value = "".join(rtexts) if tv.shouldChangeTextInRange_replacementString_( range, value) >> c.replace: ts = tv.textStorage() >> m.mock(ak.NSTextStorage) ts.replaceCharactersInRange_withString_(range, value) tv.didChangeText() tv.setNeedsDisplay_(True) dobeep = False eq_(dobeep, c.beep) if dobeep: beep() with m: fc.finder._replace_all(c.sel_only)
def test(c): with test_app() as app: m = Mocker() fc = FindController(app) beep = m.replace(mod, 'beep') dobeep = True editor = m.replace(fc.finder, 'get_editor')() >> (m.mock(Editor) if c.has_tv else None) options = m.replace(fc.finder, "options") ftext = options.find_text >> c.ftext range = (editor.selection >> c.sel) if c.has_tv else None if c.has_tv and c.ftext and ((c.sel_only and c.sel[1] > 0) or not c.sel_only): text = editor.text >> Text(c.text) if not c.sel_only: if (options.wrap_around >> c.wrap): range = (0, 0) else: range = (range[0], len(text) - range[0]) if options.regular_expression >> c.regex: finditer = m.method(fc.finder.regexfinditer) elif options.match_entire_word >> c.mword: ftext = "\\b" + re.escape(ftext) + "\\b" finditer = m.method(fc.finder.regexfinditer) else: finditer = m.method(fc.finder.simplefinditer) rtext = options.replace_text >> c.rtext found = None ranges = [] rtexts = [] items = [] FoundRange = make_found_range_factory( FindOptions(regular_expression=c.regex, match_entire_word=c.mword)) for rng in c.ranges: found = FoundRange(rng) if ranges: rtexts.append(text[sum(ranges[-1]):rng[0]]) ranges.append(found.range) rtexts.append(rtext) items.append(found) finditer(text, ftext, range, FORWARD, False) >> items if ranges: start = c.ranges[0][0] range = (start, sum(c.ranges[-1]) - start) value = "".join(rtexts) tv = editor.text_view >> m.mock(TextView) if tv.shouldChangeTextInRange_replacementString_(range, value) >> c.replace: tv.didChangeText() tv.setNeedsDisplay_(True) dobeep = False eq_(dobeep, c.beep) if dobeep: beep() with m: fc.finder._replace_all(c.sel_only) if c.ranges and c.replace: eq_(text[:], "<XEXX>")
def test(c): with test_app() as app: m = Mocker() fc = FindController(app) beep = m.replace(mod, 'beep') editor = (m.mock(Editor) if c.has_tv else None) m.replace(fc.finder, 'get_editor')() >> editor options = m.replace(fc.finder, "options") ftext = options.find_text >> c.ftext range = (editor.selection >> c.sel) if c.has_tv else None if c.has_tv and c.ftext and ((c.sel_only and c.sel[1] > 0) or not c.sel_only): text = editor.text >> Text(c.text) if not c.sel_only: if (options.wrap_around >> c.wrap): range = (0, 0) else: range = (range[0], len(text) - range[0]) if options.regular_expression >> c.regex: finditer = m.method(fc.finder.regexfinditer) elif options.match_entire_word >> c.mword: ftext = "\\b" + re.escape(ftext) + "\\b" finditer = m.method(fc.finder.regexfinditer) else: finditer = m.method(fc.finder.simplefinditer) rtext = options.replace_text >> c.rtext found = None ranges = [] rtexts = [] items = [] FoundRange = make_found_range_factory( FindOptions(regular_expression=c.regex, match_entire_word=c.mword)) for rng in c.ranges: found = FoundRange(rng) if ranges: rtexts.append(text[sum(ranges[-1]):rng[0]]) ranges.append(found.range) rtexts.append(rtext) items.append(found) finditer(text, ftext, range, FORWARD, False) >> items if ranges: start = c.ranges[0][0] range = (start, sum(c.ranges[-1]) - start) value = "".join(rtexts) def put(val, rng, select=False): text[rng] = val (editor.put(value, range) << c.replace).call(put) if c.beep: beep() with m: fc.finder._replace_all(c.sel_only) if c.ranges and c.replace: eq_(text[:], "<XEXX>")
def test(c): m = Mocker() fc = FindController.shared_controller() beep = m.replace(ak, 'NSBeep') dobeep = True tv = m.replace(fc.finder, 'find_target')() >> (m.mock(TextView) if c.has_tv else None) options = m.replace(fc.finder, "options") ftext = options.find_text >> c.ftext range = (tv.selectedRange() >> fn.NSRange(*c.sel)) if c.has_tv else None if c.has_tv and c.ftext and ((c.sel_only and c.sel[1] > 0) or not c.sel_only): text = tv.string() >> c.text if not c.sel_only: if (options.wrap_around >> c.wrap): range = fn.NSMakeRange(0, 0) else: range = fn.NSMakeRange(range[0], len(text) - range[0]) if options.regular_expression >> c.regex: finditer = m.method(fc.finder.regexfinditer) elif options.match_entire_word >> c.mword: ftext = "\\b" + re.escape(ftext) + "\\b" finditer = m.method(fc.finder.regexfinditer) else: finditer = m.method(fc.finder.simplefinditer) rtext = options.replace_text >> c.rtext found = None ranges = [] rtexts = [] items = [] FoundRange = make_found_range_factory( FindOptions(regular_expression=c.regex, match_entire_word=c.mword)) for r in c.ranges: found = FoundRange(fn.NSMakeRange(*r)) if ranges: rtexts.append(text[sum(ranges[-1]):r[0]]) ranges.append(found.range) rtexts.append(rtext) items.append(found) finditer(text, ftext, range, FORWARD, False) >> items if ranges: start = c.ranges[0][0] range = fn.NSMakeRange(start, sum(c.ranges[-1]) - start) value = "".join(rtexts) if tv.shouldChangeTextInRange_replacementString_(range, value) >> c.replace: ts = tv.textStorage() >> m.mock(ak.NSTextStorage) ts.replaceCharactersInRange_withString_(range, value) tv.didChangeText() tv.setNeedsDisplay_(True) dobeep = False eq_(dobeep, c.beep) if dobeep: beep() with m: fc.finder._replace_all(c.sel_only)
def test(c): m = Mocker() fc = FindController.shared_controller() tv = m.mock(TextView) regexfind = m.method(fc.finder.regexfinditer) simplefind = m.method(fc.finder.simplefinditer) sel = fn.NSMakeRange(1, 2) direction = "<direction>" options = m.property(fc.finder, "options").value >> m.mock(FindOptions) ftext = "<find>" if options.regular_expression >> c.regex: finditer = regexfind elif options.match_entire_word >> c.mword: finditer = regexfind ftext = "\\b" + re.escape(ftext) + "\\b" else: finditer = simplefind range = fn.NSMakeRange(sel.location, 0) items = [] rng = None tv.string() >> "<text>" FoundRange = make_found_range_factory( FindOptions(regular_expression=c.regex, match_entire_word=c.mword)) for i, r in enumerate(c.matches): if r is mod.WRAPTOKEN: items.append(r) continue found = FoundRange(fn.NSMakeRange(*r)) items.append(found) if i == 0 and found.range == sel: continue tv._Finder__recently_found_range = found rng = found.range finditer("<text>", ftext, range, direction, True) >> items with m: result = fc.finder._find(tv, "<find>", sel, direction) eq_(result, rng)
def test(c): m = Mocker() fc = FindController.shared_controller() tv = m.mock(TextView) regexfind = m.method(fc.finder.regexfinditer) simplefind = m.method(fc.finder.simplefinditer) sel = fn.NSMakeRange(1, 2) direction = "<direction>" options = m.property(fc.finder, "options").value >> m.mock(FindOptions) ftext = "<find>" if options.regular_expression >> c.regex: finditer = regexfind elif options.match_entire_word >> c.mword: finditer = regexfind ftext = "\\b" + re.escape(ftext) + "\\b" else: finditer = simplefind range = fn.NSMakeRange(sel.location, 0) items = [] rng = None tv.string() >> "<text>" FoundRange = make_found_range_factory( FindOptions(regular_expression=c.regex, match_entire_word=c.mword)) for i, r in enumerate(c.matches): if r is mod.WRAPTOKEN: items.append(r) continue found = FoundRange(fn.NSMakeRange(*r)) items.append(found) if i == 0 and found.range == sel: continue tv._Finder__recently_found_range = found rng = found.range finditer("<text>", ftext, range, direction, True) >> items with m: result = fc.finder._find(tv, "<find>", sel, direction) eq_(result, rng)