v2 / vlib / term / ui / input_nix_test.v
103 lines · 93 sloc · 2.64 KB · 8e4dcc699acd2e529cb14313f265aebabfd59c28
Raw
1module ui
2
3fn test_escape_sequence_parses_csi_u_plain_key() {
4 seq := '\x1b[97;1u'
5 event, len := escape_sequence(seq)
6 assert len == seq.len
7 assert event.typ == .key_down
8 assert event.code == .a
9 assert event.modifiers.is_empty()
10 assert event.utf8 == seq
11}
12
13fn test_escape_sequence_parses_csi_u_plain_key_without_modifier_param() {
14 seq := '\x1b[27u'
15 event, len := escape_sequence(seq)
16 assert len == seq.len
17 assert event.typ == .key_down
18 assert event.code == .escape
19 assert event.modifiers.is_empty()
20 assert event.utf8 == seq
21}
22
23fn test_escape_sequence_parses_csi_u_modified_key() {
24 seq := '\x1b[97;5u'
25 event, len := escape_sequence(seq)
26 assert len == seq.len
27 assert event.typ == .key_down
28 assert event.code == .a
29 assert event.modifiers.has(.ctrl)
30 assert !event.modifiers.has(.shift)
31 assert !event.modifiers.has(.alt)
32 assert event.utf8 == seq
33}
34
35fn test_escape_sequence_parses_csi_u_key_release() {
36 seq := '\x1b[97;1:3u'
37 event, len := escape_sequence(seq)
38 assert len == seq.len
39 assert event.typ == .key_up
40 assert event.code == .a
41 assert event.modifiers.is_empty()
42 assert event.utf8 == seq
43}
44
45fn test_escape_sequence_parses_csi_u_key_repeat_with_text() {
46 seq := '\x1b[97;1:2;97u'
47 event, len := escape_sequence(seq)
48 assert len == seq.len
49 assert event.typ == .key_down
50 assert event.code == .a
51 assert event.ascii == `a`
52 assert event.utf8 == 'a'
53}
54
55fn test_escape_sequence_parses_csi_u_shifted_text_with_associated_text() {
56 seq := '\x1b[97;2;65u'
57 event, len := escape_sequence(seq)
58 assert len == seq.len
59 assert event.typ == .key_down
60 assert event.code == .a
61 assert event.ascii == `A`
62 assert event.modifiers == .shift
63 assert event.utf8 == 'A'
64}
65
66fn test_escape_sequence_parses_csi_u_enter_key() {
67 seq := '\x1b[13;1u'
68 event, len := escape_sequence(seq)
69 assert len == seq.len
70 assert event.typ == .key_down
71 assert event.code == .enter
72 assert event.utf8 == seq
73}
74
75fn test_escape_sequence_parses_modify_other_keys_sequence() {
76 seq := '\x1b[27;3;97~'
77 event, len := escape_sequence(seq)
78 assert len == seq.len
79 assert event.typ == .key_down
80 assert event.code == .a
81 assert event.modifiers == .alt
82 assert event.utf8 == seq
83}
84
85fn test_escape_sequence_parses_modified_special_key_sequence() {
86 seq := '\x1b[3;5~'
87 event, len := escape_sequence(seq)
88 assert len == seq.len
89 assert event.typ == .key_down
90 assert event.code == .delete
91 assert event.modifiers == .ctrl
92 assert event.utf8 == seq
93}
94
95fn test_escape_sequence_parses_modified_special_key_release_sequence() {
96 seq := '\x1b[1;5:3A'
97 event, len := escape_sequence(seq)
98 assert len == seq.len
99 assert event.typ == .key_up
100 assert event.code == .up
101 assert event.modifiers == .ctrl
102 assert event.utf8 == seq
103}
104