1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from __future__ import annotations
from pyratatui import Style
from pygittools.tui.keys import key
from pygittools.tui.multiline_edit import MultilineEdit
def test_insert_and_newline() -> None:
edit = MultilineEdit()
edit.handle_key(key("a"))
edit.handle_key(key("b"))
edit.handle_key(key("Enter"))
edit.handle_key(key("c"))
assert edit.value() == "ab\nc"
assert edit.cursor == 4
def test_arrows_move_cursor() -> None:
edit = MultilineEdit("hi")
edit.handle_key(key("Left"))
assert edit.cursor == 1
edit.handle_key(key("Right"))
assert edit.cursor == 2
def test_vim_letters_insert_not_move() -> None:
edit = MultilineEdit()
edit.handle_key(key("j"))
edit.handle_key(key("k"))
assert edit.value() == "jk"
def test_soft_wrap_render() -> None:
edit = MultilineEdit("abcdefgh")
edit._width = 3
text = edit.render(3, 4, focused=True, style=Style(), cursor_style=Style().reversed())
assert text.height >= 3
def test_backspace_and_delete() -> None:
edit = MultilineEdit("ab")
edit.handle_key(key("Left"))
edit.handle_key(key("Delete"))
assert edit.value() == "a"
edit.handle_key(key("Backspace"))
assert edit.value() == ""