mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-17 05:54:59 +02:00
Implement character manipulation APIs
This commit is contained in:
@@ -100,3 +100,64 @@ class TestScreen(BaseTest):
|
||||
self.ae(str(s.linebuf[4]), 'a\u0306b1\u030623')
|
||||
self.ae((s.cursor.x, s.cursor.y), (2, 4))
|
||||
self.assertChanges(t, ignore='cursor', cells={4: ((0, 4),)})
|
||||
|
||||
def test_char_manipulation(self):
|
||||
s, t = self.create_screen()
|
||||
|
||||
def init():
|
||||
s.reset(), t.reset()
|
||||
s.draw(b'abcde')
|
||||
s.cursor.bold = True
|
||||
s.cursor_back(4)
|
||||
t.reset()
|
||||
self.ae(s.cursor.x, 1)
|
||||
|
||||
init()
|
||||
s.insert_characters(2)
|
||||
self.ae(str(s.linebuf[0]), 'a bc')
|
||||
self.assertTrue(s.linebuf[0].cursor_from(1).bold)
|
||||
self.assertChanges(t, ignore='cursor', cells={0: ((1, 4),)})
|
||||
s.cursor_back(1)
|
||||
s.insert_characters(20)
|
||||
self.ae(str(s.linebuf[0]), ' ')
|
||||
self.assertChanges(t, ignore='cursor', cells={0: ((0, 4),)})
|
||||
s.draw('xココ'.encode('utf-8'))
|
||||
s.cursor_back(5)
|
||||
t.reset()
|
||||
s.insert_characters(1)
|
||||
self.ae(str(s.linebuf[0]), ' xコ ')
|
||||
self.assertChanges(t, ignore='cursor', cells={0: ((0, 4),)})
|
||||
|
||||
init()
|
||||
s.delete_characters(2)
|
||||
self.ae(str(s.linebuf[0]), 'ade ')
|
||||
self.assertTrue(s.linebuf[0].cursor_from(4).bold)
|
||||
self.assertFalse(s.linebuf[0].cursor_from(2).bold)
|
||||
self.assertChanges(t, ignore='cursor', cells={0: ((1, 4),)})
|
||||
|
||||
init()
|
||||
s.erase_characters(2)
|
||||
self.ae(str(s.linebuf[0]), 'a de')
|
||||
self.assertTrue(s.linebuf[0].cursor_from(1).bold)
|
||||
self.assertFalse(s.linebuf[0].cursor_from(4).bold)
|
||||
self.assertChanges(t, cells={0: ((1, 2),)})
|
||||
s.erase_characters(20)
|
||||
self.ae(str(s.linebuf[0]), 'a ')
|
||||
|
||||
init()
|
||||
s.erase_in_line()
|
||||
self.ae(str(s.linebuf[0]), 'a ')
|
||||
self.assertTrue(s.linebuf[0].cursor_from(1).bold)
|
||||
self.assertFalse(s.linebuf[0].cursor_from(0).bold)
|
||||
self.assertChanges(t, cells={0: ((1, 4),)})
|
||||
init()
|
||||
s.erase_in_line(1)
|
||||
self.ae(str(s.linebuf[0]), ' cde')
|
||||
self.assertChanges(t, cells={0: ((0, 2),)})
|
||||
init()
|
||||
s.erase_in_line(2)
|
||||
self.ae(str(s.linebuf[0]), ' ')
|
||||
self.assertChanges(t, cells={0: ((0, 4),)})
|
||||
init()
|
||||
s.erase_in_line(2, private=True)
|
||||
self.ae((False, False, False, False, False), tuple(map(lambda i: s.linebuf[0].cursor_from(i).bold, range(5))))
|
||||
|
||||
Reference in New Issue
Block a user