Exemplo n.º 1
0
def test_find_next(monkeypatch, capsys):
    treedata = [('ele1', '<> html', {}), ('ele2', '<> div', {}),
                ('ele3', '<> div', {
                    'id': '1'
                }), ('text', 'some text', {}), ('ele4', '<> div', {
                    'id': '2'
                }), ('ele5', '<> div', {
                    'class': 'footer'
                })]
    testobj = base.SearchHelper(MockEditor())
    # not findable
    assert testobj.find_next(treedata, ('p', '', '', '')) is None
    assert testobj.find_next(treedata, ('div', 'test', '', '')) is None
    assert testobj.find_next(treedata, ('div', 'class', 'header', '')) is None
    assert testobj.find_next(treedata, ('div', '', '', 'cheese')) is None
    # findable
    assert testobj.find_next(treedata, ('div', '', '', '')) == (1, 'ele2')
    assert testobj.find_next(treedata, ('div', 'id', '', '')) == (2, 'ele3')
    assert testobj.find_next(treedata, ('div', 'class', '', ''),
                             pos=(2, 'ele3')) == (5, 'ele5')
    assert testobj.find_next(treedata, ('div', 'id', '2', '')) == (4, 'ele4')
    assert testobj.find_next(treedata, ('div', '', '', 'tex')) == (3, 'text')
    # backwards - dit klopt niet overal
    assert testobj.find_next(treedata, ('html', '', '', ''),
                             True) == (0, 'ele1')
    assert testobj.find_next(treedata, ('div', 'class', '', ''),
                             True) == (0, 'ele5')
    assert testobj.find_next(treedata, ('div', 'id', '1', ''),
                             True) == (2, 'ele3')
    assert testobj.find_next(treedata, ('div', '', '', 'ome'),
                             True) == (2, 'text')
Exemplo n.º 2
0
def test_search_next(monkeypatch, capsys):
    def mock_flatten(self, *args):
        return (('top', 'filenaam', {}), ('ele', '<> html', {}))

    def mock_next(self, *args):
        print('called search.find_next() with args `{}`'.format(args))
        return 'pos', 1

    testobj = base.SearchHelper(MockEditor())
    monkeypatch.setattr(testobj, 'flatten_tree', mock_flatten)
    monkeypatch.setattr(testobj, 'find_next', mock_next)
    testobj.search_next()
    assert capsys.readouterr(
    ).out == 'called gui.__init__()\ncalled editor.__init__()\n'
    testobj.search_args = ('x', 'y', 'z', 'a')
    testobj.search_pos = (1, 'ele')
    testobj.search_next()
    assert capsys.readouterr().out == (
        "called search.find_next() with args `(('x', 'y', 'z', 'a')"
        ", False, (1, 'ele'))`\n"
        'called gui.set_selected_item(`1`)\n')

    def mock_next(self, *args):
        return None

    monkeypatch.setattr(testobj, 'find_next', mock_next)
    testobj.search_specs = 'search_specs'
    testobj.search_next()
    assert capsys.readouterr(
    ).out == 'called gui.meld(`search_specs\n\nNo (more) results`)\n'
Exemplo n.º 3
0
def test_replace_element(monkeypatch, capsys):
    def mock_element_text(self, node):
        self.textcounter += 1
        data = [
            '', '<> html', '<> div id="1"', '<!> <> hr',
            '<!> <> p class="centered"'
        ]
        return data[self.textcounter]

    def mock_set_text(self, node, *args):
        print('called node.set_element_text for `{}` to `{}`'.format(
            node, args[0]))

    monkeypatch.setattr(MockGui, 'get_element_text', mock_element_text)
    monkeypatch.setattr(MockGui, 'set_element_text', mock_set_text)
    testobj = base.SearchHelper(MockEditor())
    testobj.replace_args = ('x', 'y', 'z', 'a')
    testobj.replace_element(('el1', ))
    assert capsys.readouterr().out == (
        'called gui.__init__()\ncalled editor.__init__()\n'
        'called node.set_element_text for `el1` to `<> x`\n')
    testobj.replace_element(('el2', ))
    assert capsys.readouterr(
    ).out == 'called node.set_element_text for `el2` to `<> x id="1"`\n'
    testobj.replace_element(('el3', ))
    assert capsys.readouterr(
    ).out == 'called node.set_element_text for `el3` to `<!> <> x`\n'
    testobj.replace_element(('el4', ))
    assert capsys.readouterr().out == (
        'called node.set_element_text for `el4` to `<!> <> x '
        'class="centered"`\n')
Exemplo n.º 4
0
def test_init(monkeypatch, capsys):
    testobj = base.SearchHelper(MockEditor())
    assert hasattr(testobj, 'editor')
    assert hasattr(testobj, 'gui')
    assert testobj.search_args == []
    assert testobj.replace_args == []
    assert capsys.readouterr(
    ).out == 'called gui.__init__()\ncalled editor.__init__()\n'
Exemplo n.º 5
0
def test_replace_from(monkeypatch, capsys):
    def mock_flatten(self, *args):
        return (('top', 'filenaam', {}), ('ele', '<> html', {}))

    def mock_next(self, *args):
        print('called search.find_next() with args `{}`'.format(args))
        return 'pos', 1

    def mock_replace(*args):
        print('called search.replace_and_find() with args `{}`, `{}`'.format(
            args[0], args[1]))

    testobj = base.SearchHelper(MockEditor())
    monkeypatch.setattr(testobj, 'flatten_tree', mock_flatten)
    monkeypatch.setattr(testobj, 'find_next', mock_next)
    monkeypatch.setattr(testobj, 'replace_and_find', mock_replace)
    testobj.replace_from('top')
    assert capsys.readouterr().out == (
        'called gui.__init__()\ncalled editor.__init__()\n'
        "called search.find_next() with args `(('x', 'y', 'z', 'a')"
        ", False)`\n"
        "called search.replace_and_find() with args `('pos', 1)`,"
        ' `False`\n')
    testobj.replace_from('top', True)
    assert capsys.readouterr().out == (
        "called search.find_next() with args `(('x', 'y', 'z', 'a')"
        ", True)`\n"
        "called search.replace_and_find() with args `('pos', 1)`,"
        ' `True`\n')
    testobj.replace_from('ele')
    assert capsys.readouterr().out == (
        "called search.find_next() with args `(('x', 'y', 'z', 'a')"
        ", False, (1, 'ele'))`\n"
        "called search.replace_and_find() with args `('pos', 1)`,"
        ' `False`\n')
    testobj.replace_from('ele', True)
    assert capsys.readouterr().out == (
        "called search.find_next() with args `(('x', 'y', 'z', 'a')"
        ", True, (1, 'ele'))`\n"
        "called search.replace_and_find() with args `('pos', 1)`,"
        ' `True`\n')

    def mock_next(self, *args):
        return None

    monkeypatch.setattr(testobj, 'find_next', mock_next)
    testobj.replace_from('ele')
    assert capsys.readouterr(
    ).out == 'called gui.meld(`search_specs\n\nNo (more) results`)\n'
Exemplo n.º 6
0
def test_replace_text(monkeypatch, capsys):
    def mock_element_text(self, node):
        return 'some text'

    def mock_set_text(self, node, *args):
        print('called node.set_element_text for `{}` to `{}`'.format(
            node, args[0]))

    monkeypatch.setattr(MockGui, 'get_element_text', mock_element_text)
    monkeypatch.setattr(MockGui, 'set_element_text', mock_set_text)
    testobj = base.SearchHelper(MockEditor())
    testobj.search_args = ('x', 'y', 'z', 'tex')
    testobj.replace_args = ('x', 'y', 'z', 'a')
    testobj.replace_text(('ele', ))
    assert capsys.readouterr().out == (
        'called gui.__init__()\ncalled editor.__init__()\n'
        "called node.set_element_text for `ele` to `some at`\n")
Exemplo n.º 7
0
def test_replace_next(monkeypatch, capsys):
    def mock_replace(*args):
        print('called search.replace_and_find() with args `{}`, `{}`'.format(
            args[0], args[1]))

    testobj = base.SearchHelper(MockEditor())
    monkeypatch.setattr(testobj, 'replace_and_find', mock_replace)
    testobj.replace_next()
    assert capsys.readouterr(
    ).out == 'called gui.__init__()\ncalled editor.__init__()\n'
    testobj.replace_args = ('x', 'y', 'z', 'a')
    testobj.search_pos = '1'
    testobj.replace_next()
    assert capsys.readouterr(
    ).out == 'called search.replace_and_find() with args `1`, `False`\n'
    testobj.replace_next(True)
    assert capsys.readouterr(
    ).out == 'called search.replace_and_find() with args `1`, `True`\n'
Exemplo n.º 8
0
def test_flatten_tree_3(monkeypatch, capsys):
    "commented"

    def mock_element_text(self, node):
        self.textcounter += 1
        data = ['', 'fnm'
                ] + 2 * ['<!> <> html'] + 2 * ['<!> <> div id="1"'
                                               ] + 2 * ['<!> some text']
        return data[self.textcounter]

    def mock_element_children(self, node):
        self.childcounter += 1
        return [['top'], ['ele1'], ['ele2'], ['text'], []][self.childcounter]

    monkeypatch.setattr(MockGui, 'get_element_text', mock_element_text)
    monkeypatch.setattr(MockGui, 'get_element_children', mock_element_children)
    testobj = base.SearchHelper(MockEditor())
    data = testobj.flatten_tree('top')
    assert data == [('ele1', '<!> <> html', {}), ('ele2', '<!> <> div', {}),
                    ('text', '<!> some text', {})]
Exemplo n.º 9
0
def test_flatten_tree_2(monkeypatch, capsys):
    "regular"

    def mock_element_text(self, node):
        self.textcounter += 1
        data = [
            '', 'filenaam'
        ] + 2 * ['<> html'] + 2 * ['<> div id="1"'] + 2 * ['some text']
        return data[self.textcounter]

    def mock_element_children(self, node):
        self.childcounter += 1
        return ['', ['ele1'], ['ele2'], ['text'], []][self.childcounter]

    monkeypatch.setattr(MockGui, 'get_element_text', mock_element_text)
    monkeypatch.setattr(MockGui, 'get_element_children', mock_element_children)
    testobj = base.SearchHelper(MockEditor())
    # import pdb; pdb.set_trace()
    data = testobj.flatten_tree('top')
    assert data == [('ele1', '<> html', {}), ('ele2', '<> div', {}),
                    ('text', 'some text', {})]
Exemplo n.º 10
0
def test_replace_attr(monkeypatch, capsys):
    def mock_element_data(self, node):
        return {"id": "1"}

    def mock_set_data(self, node, *args):
        print('called node.set_element_data for `{}` to `{}`'.format(
            node, args[0]))

    def mock_element_text(self, node):
        return '<> html'

    def mock_set_text(self, node, *args):
        print('called node.set_element_text for `{}` to `{}`'.format(
            node, args[0]))

    monkeypatch.setattr(MockGui, 'get_element_data', mock_element_data)
    monkeypatch.setattr(MockGui, 'set_element_data', mock_set_data)
    monkeypatch.setattr(MockGui, 'get_element_text', mock_element_text)
    monkeypatch.setattr(MockGui, 'set_element_text', mock_set_text)
    testobj = base.SearchHelper(MockEditor())
    testobj.search_args = ('x', 'id', '1', 'a')
    testobj.replace_args = ('x', 'y', '', 'a')
    testobj.replace_attr(('el1', ))
    assert capsys.readouterr().out == (
        'called gui.__init__()\ncalled editor.__init__()\n'
        "called node.set_element_data for `el1` to `{'y': '1'}`\n"
        "called node.set_element_text for `el1` to `<> html`\n")

    def mock_element_text(self, node):
        return '<!> <> div'

    monkeypatch.setattr(MockGui, 'get_element_text', mock_element_text)
    testobj = base.SearchHelper(MockEditor())
    testobj.search_args = ('x', 'id', '1', 'a')
    testobj.replace_args = ('x', 'y', 'z', 'a')
    testobj.replace_attr(('el2', ))
    assert capsys.readouterr().out == (
        'called gui.__init__()\ncalled editor.__init__()\n'
        "called node.set_element_data for `el2` to `{'y': 'z'}`\n"
        "called node.set_element_text for `el2` to `<!> <> div`\n")

    def mock_element_text(self, node):
        return '<> p'

    monkeypatch.setattr(MockGui, 'get_element_text', mock_element_text)
    testobj = base.SearchHelper(MockEditor())
    testobj.search_args = ('x', 'id', '1', 'a')
    testobj.replace_args = ('x', '', 'z', 'a')
    testobj.replace_attr(('el3', ))
    assert capsys.readouterr().out == (
        'called gui.__init__()\ncalled editor.__init__()\n'
        "called node.set_element_data for `el3` to `{'id': 'z'}`\n"
        'called node.set_element_text for `el3` to `<> p id="z"`\n')
    testobj = base.SearchHelper(MockEditor())
    testobj.search_args = ('x', 'id', '1', 'a')
    testobj.replace_args = ('x', '=/= y', 'z', 'a')
    testobj.replace_attr(('el4', ))
    assert capsys.readouterr().out == (
        'called gui.__init__()\ncalled editor.__init__()\n'
        "called node.set_element_data for `el4` to `{'id': 'z'}`\n"
        'called node.set_element_text for `el4` to `<> p id="z"`\n')
Exemplo n.º 11
0
def test_flatten_tree_1(monkeypatch, capsys):
    "no children"
    testobj = base.SearchHelper(MockEditor())
    data = testobj.flatten_tree('top')
    assert data == []