Exemple #1
0
 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()
Exemple #2
0
 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()
Exemple #3
0
 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)
Exemple #4
0
 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>")
Exemple #5
0
    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>")
Exemple #6
0
 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)
Exemple #7
0
 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)
Exemple #8
0
 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)