Implement cursor movement APIs

This commit is contained in:
Kovid Goyal
2016-10-19 20:15:07 +05:30
parent fea7c2dcb0
commit b354e95401
2 changed files with 49 additions and 17 deletions

View File

@@ -64,7 +64,7 @@ class TestScreen(BaseTest):
self.ae(str(s.linebuf[0]), 'ココx')
self.ae(str(s.linebuf[1]), 'ニチ ')
self.ae(str(s.linebuf[2]), '')
self.assertChanges(t, ignore='cursor', cells={0: ((5, 5),), 1: ((0, 3),), 2: ((0, 1),)})
self.assertChanges(t, ignore='cursor', cells={1: ((0, 3),), 2: ((0, 1),)})
self.ae(s.cursor.x, 2), self.ae(s.cursor.y, 2)
s.draw('Ƶ̧\u0308'.encode('utf-8'))
self.ae(str(s.linebuf[2]), 'ハƵ̧\u0308 ')
@@ -192,3 +192,26 @@ class TestScreen(BaseTest):
self.ae(s.display, (' ', ' ', ' ', ' ', ' '))
self.assertChanges(t, lines=set(range(5)))
self.assertFalse(s.linebuf[0].cursor_from(1).bold)
def test_cursor_movement(self):
s, t = self.create_screen()
s.draw(b'12345' * 5)
t.reset()
s.cursor_up(2)
self.ae((s.cursor.x, s.cursor.y), (4, 2))
self.assertChanges(t, ignore='cursor', cells={4: ((4, 4),)})
s.cursor_up1()
self.ae((s.cursor.x, s.cursor.y), (0, 1))
self.assertChanges(t, ignore='cursor', cells={2: ((4, 4),)})
s.cursor_forward(3)
self.ae((s.cursor.x, s.cursor.y), (3, 1))
self.assertChanges(t, ignore='cursor', cells={1: ((0, 0),)})
s.cursor_back()
self.ae((s.cursor.x, s.cursor.y), (2, 1))
self.assertChanges(t, ignore='cursor', cells={1: ((3, 3),)})
s.cursor_down()
self.ae((s.cursor.x, s.cursor.y), (2, 2))
self.assertChanges(t, ignore='cursor', cells={1: ((2, 2),)})
s.cursor_down1(5)
self.ae((s.cursor.x, s.cursor.y), (0, 4))
self.assertChanges(t, ignore='cursor', cells={2: ((2, 2),)})