Ejemplo n.º 1
0
    def test_edit_mode(self):
        b = Buffer()
        s = Screen()
        s.activate_buffer(b)

        s.mode = Mode.EDIT

        ###

        for cp in 'abc':
            s.handle_code_point(cp)
        self.assertEqual(len(s.buffer), 1)
        self.assertEqual(s.buffer.y, 0)
        self.assertEqual(s.buffer.x, 3)
        self.assertEqual(s.buffer.current_line.text, 'abc')

        for cp in 'def\nghi':
            s.handle_code_point(cp)
        self.assertEqual(len(s.buffer), 2)
        self.assertEqual(s.buffer.y, 1)
        self.assertEqual(s.buffer.x, 3)
        self.assertEqual(s.buffer[0].text, 'abcdef')
        self.assertEqual(s.buffer.current_line.text, 'ghi')

        for cp in '\x7f' * 3:
            s.handle_code_point(cp)
        self.assertEqual(len(s.buffer), 2)
        self.assertEqual(s.buffer.y, 1)
        self.assertEqual(s.buffer.x, 0)
        self.assertEqual(s.buffer[0].text, 'abcdef')
        self.assertEqual(s.buffer.current_line.text, '')

        for cp in '\x7f' * 2:
            s.handle_code_point(cp)
        self.assertEqual(len(s.buffer), 1)
        self.assertEqual(s.buffer.y, 0)
        self.assertEqual(s.buffer.x, 5)
        self.assertEqual(s.buffer.current_line.text, 'abcde')

        for cp in '\x7f' * 5:
            s.handle_code_point(cp)
        self.assertEqual(len(s.buffer), 1)
        self.assertEqual(s.buffer.y, 0)
        self.assertEqual(s.buffer.x, 0)
        self.assertEqual(s.buffer.current_line.text, '')

        for cp in '\x7f' * 10:
            s.handle_code_point(cp)
        self.assertEqual(len(s.buffer), 1)
        self.assertEqual(s.buffer.y, 0)
        self.assertEqual(s.buffer.x, 0)
        self.assertEqual(s.buffer.current_line.text, '')
Ejemplo n.º 2
0
    def test_movement(self):
        b = Buffer()
        s = Screen()
        s.activate_buffer(b)

        s.mode = Mode.EDIT

        for cp in '\n'.join(('0123', '01', '0123')):
            s.handle_code_point(cp)
        s.handle_code_point('\x04')  # C-d
        self.assertEqual(s.buffer.y, 2)
        self.assertEqual(s.buffer.x, 4)

        ###

        s.handle_code_point('j')
        self.assertEqual(s.buffer.y, 2)
        self.assertEqual(s.buffer.x, 3)
        self.assertNoMovement(s, 'k')
        self.assertMovement(s, 'j', 'l', ';', 'J', ':')

        s.handle_code_point('J')
        self.assertEqual(s.buffer.y, 2)
        self.assertEqual(s.buffer.x, 0)
        self.assertNoMovement(s, 'j', 'J', 'k')
        self.assertMovement(s, 'l', ';', ':')

        s.handle_code_point(';')
        self.assertEqual(s.buffer.y, 2)
        self.assertEqual(s.buffer.x, 1)
        self.assertNoMovement(s, 'k')
        self.assertMovement(s, 'j', 'l', ';', 'J', ':')

        s.handle_code_point(':')
        self.assertEqual(s.buffer.y, 2)
        self.assertEqual(s.buffer.x, 4)
        self.assertNoMovement(s, ';', ':', 'k')
        self.assertMovement(s, 'j', 'l', 'J')

        s.handle_code_point('l')
        self.assertEqual(s.buffer.y, 1)
        self.assertEqual(s.buffer.x, 2)
        self.assertNoMovement(s, ';', ':')
        self.assertMovement(s, 'j', 'k', 'l', 'J')

        s.handle_code_point('l')
        self.assertEqual(s.buffer.y, 0)
        self.assertEqual(s.buffer.x, 2)
        self.assertNoMovement(s, 'l')
        self.assertMovement(s, 'j', 'k', ';', 'J', ':')