Пример #1
0
 def test_mocks_Window(self):
     w = mocks.Window(cx(['']))
     self.assertEqual(list(w.view(0)), [(0, [((), '')])])
     w = mocks.Window(cx(['abc\n', 'def\n']))
     self.assertEqual(list(w.view(0)), [
         (0, [((), 'abc\n')]),
         (1, [((), 'def\n')]),
     ])
Пример #2
0
 def test_Location_0(self):
     w = mocks.Window(cx(['']))
     self.assertEqual(list(w.view(0)), [(0, [((), '')])])
     ui = mocks.UI()
     renderer = ttyfe.TTYRenderer(ui, 0, 24, w)
     l = ttyfe.Location(renderer, 0, 0)
     m = l.shift(100)
     self.assertEqual(l.cursor, m.cursor)
     self.assertEqual(l.offset, m.offset)
     m = l.shift(-100)
     self.assertEqual(l.cursor, m.cursor)
     self.assertEqual(l.offset, m.offset)
Пример #3
0
    def test_replace_cursor(self):
        w = prompt.Search(mocks.FE(),
                          forward=False,
                          prompt='search ',
                          history='test_search',
                          target=mocks.Window([]))

        w.insert('fo')
        mark = w.make_mark(w.cursor)
        w.target.find_ret = False
        w.insert('o')
        self.assertEqual(w.cursor.point, mark.point + 1)
Пример #4
0
    def test_search(self):
        w = prompt.Search(
            mocks.FE(),
            forward=False,
            prompt='search ',
            history='test_search',
            target=mocks.Window([]))

        self.assertFalse(w.forward)

        do(w.search(None, True))

        self.assertTrue(w.forward)

        w.setprompt()
        self.assertEqual(w.buf[:w.divider], 'search forward: ')

        self.assertIsNone(w.target.match_string)
        self.assertIsNone(w.target.match_forward)
        self.assertIsNone(w.target.find_string)
        self.assertIsNone(w.target.find_forward)

        w.insert('foo')
        self.assertEqual(w.target.match_re.pattern, 'foo')
        self.assertEqual(w.target.match_forward, True)
        self.assertEqual(w.target.find_re.pattern, 'foo')
        self.assertEqual(w.target.find_forward, True)

        self.assertEqual(w.target.search_re.pattern, 'foo')

        w.target.match_ret = True
        w.insert('f')
        self.assertEqual(w.target.match_re.pattern, 'foof')

        # sneak around w.replace
        w.buf.replace(w.divider, len(w.buf), 'bar', False)
        w.target.search_re = re.compile('bar')
        do(w.search(None, True))
        self.assertEqual(w.target.find_re.pattern, 'bar')

        w.delete_window()
        self.assertIn('set_active_input', w.fe.called)
        self.assertIn('delete_current_window', w.fe.called)

        w.destroy()
        self.assertIsNone(w.target.search_re)
Пример #5
0
    def test_Location_3(self):
        w = mocks.Window(cx(['abc\nabc\n', 'def\n', 'ghi\n', 'jkl']))
        ui = mocks.UI()
        renderer = ttyfe.TTYRenderer(ui, 0, 24, w)

        l = ttyfe.Location(renderer, 0, 0)
        self.assertEqual(l.cursor, 0)
        self.assertEqual(l.offset, 0)
        m = l.shift(100)
        self.assertEqual(m.cursor, 3)
        self.assertEqual(l.offset, 0)

        m = l.shift(3)
        self.assertEqual(m.cursor, 2)
        self.assertEqual(l.offset, 0)

        m = m.shift(-3)
        self.assertEqual(l.cursor, m.cursor)
        self.assertEqual(l.offset, m.offset)
Пример #6
0
    def test_chunksize(self):
        w = mocks.Window(cx(['abc\nabc\n', 'def\n', 'ghi\n', 'jkl']))
        ui = mocks.UI(5)
        renderer = ttyfe.TTYRenderer(ui, 0, 24, w)

        doline = ttyfe.TTYRenderer.doline

        def _chunksize(chunk):  # essentially chunksize classic
            return len(doline(''.join(c[1] for c in chunk), 24, 24))

        self.assertEqual(renderer.chunksize([((), '')]),
                         _chunksize([((), '')]))
        self.assertEqual(renderer.chunksize([((), 'one')]),
                         _chunksize([((), 'one')]))
        self.assertEqual(renderer.chunksize([((), 'one\n')]),
                         _chunksize([((), 'one\n')]))
        self.assertEqual(renderer.chunksize([((), 'one')]), 1)

        # is this doing what I think it's doing?
        self.assertEqual(renderer.chunksize([((), 'a'), ((), 'b')]), 1)
        self.assertEqual(renderer.chunksize([((), 'a'), ((), 'b\n')]),
                         _chunksize([((), 'a'), ((), 'b\n')]))
        self.assertEqual(renderer.chunksize([((), 'a'), ((), 'b\n')]), 1)
        self.assertEqual(
            renderer.chunksize([((), 'a'), ((), 'b\n'), ((), 'c')]),
            _chunksize([((), 'a'), ((), 'b\n'), ((), 'c')]))
        self.assertEqual(
            renderer.chunksize([((), 'a'), ((), 'b\n'), ((), 'c')]), 2)

        # Okay, right text
        self.assertEqual(renderer.chunksize([((), 'a'), (('right'), 'b')]), 1)
        self.assertEqual(renderer.chunksize([((), 'a'), (('right'), 'b\n')]),
                         1)
        self.assertEqual(
            renderer.chunksize([((), 'a'), (('right'), 'b\n'), ((), 'c')]), 2)
        self.assertEqual(
            renderer.chunksize([((), 'a'), (('right'), 'b\n'), ((), 'c')]), 2)

        self.assertEqual(renderer.chunksize([((), 'aaaa'), ((''), 'bbbb')]), 2)
        self.assertEqual(
            renderer.chunksize([((), 'aaaa'), (('right'), 'bbbb')]), 2)
        self.assertEqual(
            renderer.chunksize([((), 'aaaa'), (('right'), 'bbbb\n')]), 2)
Пример #7
0
    def test_redisplay_calculate(self):
        w = mocks.Window(cx(['abc\nabc\n', 'def\n', 'ghi\n', 'jkl']))
        ui = mocks.UI()
        renderer = ttyfe.TTYRenderer(ui, 0, 6, w)
        ui.windows = [renderer]

        renderer.reframe()

        visible, cursor, sill, output = renderer.redisplay_calculate()

        self.assertEqual(len(output), 6)
        self.assertFalse(visible)
        self.assertIsNone(cursor)

        chunks = [[
            (('visible', ), ''),
            (('bg:grey24', ), '00:58'),
            ((), ' filter default'),
            (('right', ), '2'),
            (('bg:grey24', 'bold'), 'n'),
            ((), 'ext'),
            ((), '             '),
            (('bg:grey24', 'bold'), 'p'),
            ((), 'revious'),
            ((), '         '),
            (('bg:grey24', 'bold'), '}'),
            ((), ' n. like'),
            ((), '        '),
            (('bg:grey24', 'bold'), '{'),
            ((), ' p. like'),
            ((), '        '),
            (('bg:grey24', 'bold'), ']'),
            ((), ' n. stark'),
            ((), '       '),
            (('bg:grey24', 'bold'), '['),
            ((), ' p. stark'),
            ((), '       '),
            (('bg:grey24', 'bold'), 'r'),
            ((), 'eply'),
            ((), '            '),
            (('bg:grey24', 'bold'), 'f'),
            ((), 'ollowup'),
            ((), '         '),
            (('bg:grey24', 'bold'), 's'),
            ((), 'end'),
            ((), '             '),
            (('bg:grey24', 'bold'), '/'),
            ((), ' filter…'),
            ((), '        '),
            (('bg:grey24', 'bold'), '^X^C'),
            ((), ' quit'),
            ((), '        '),
            (('bg:grey24', 'bold'), '?'),
            ((), ' help'),
            ((), '\n'),
        ]]

        w = mocks.Window(chunks)

        ui = mocks.UI(maxx=205)
        renderer = ttyfe.TTYRenderer(ui, 0, 2, w)
        ui.windows = [renderer]

        renderer.reframe()

        visible, cursor, sill, output = renderer.redisplay_calculate()

        self.assertEqual(len(output), 2)
        self.assertTrue(visible)
        self.assertIsNone(cursor)
        self.assertTrue(all(a & curses.A_UNDERLINE for (a, t) in output[-1]))

        renderer = ttyfe.TTYRenderer(ui, 0, 3, w)
        ui.windows = [renderer]

        renderer.reframe()

        visible, cursor, sill, output = renderer.redisplay_calculate()

        self.assertEqual(len(output), 3)
        self.assertTrue(visible)
        self.assertIsNone(cursor)
        self.assertTrue(all(a & curses.A_UNDERLINE for (a, t) in output[-1]))