1 use anes::parser::{KeyModifiers, Mouse, MouseButton, Sequence};
2
3 use crate::test_sequences;
4
5 #[test]
button_down()6 fn button_down() {
7 test_sequences!(
8 b"\x1B[0;30;40;M",
9 Sequence::Mouse(
10 Mouse::Down(MouseButton::Left, 30, 40),
11 KeyModifiers::empty()
12 ),
13 b"\x1B[1;30;40;M",
14 Sequence::Mouse(
15 Mouse::Down(MouseButton::Middle, 30, 40),
16 KeyModifiers::empty()
17 ),
18 b"\x1B[2;30;40;M",
19 Sequence::Mouse(
20 Mouse::Down(MouseButton::Right, 30, 40),
21 KeyModifiers::empty()
22 ),
23 );
24 }
25
26 #[test]
button_down_with_modifiers()27 fn button_down_with_modifiers() {
28 test_sequences!(
29 b"\x1B[4;30;40;M",
30 Sequence::Mouse(Mouse::Down(MouseButton::Left, 30, 40), KeyModifiers::SHIFT),
31 b"\x1B[5;30;40;M",
32 Sequence::Mouse(
33 Mouse::Down(MouseButton::Middle, 30, 40),
34 KeyModifiers::SHIFT
35 ),
36 b"\x1B[6;30;40;M",
37 Sequence::Mouse(Mouse::Down(MouseButton::Right, 30, 40), KeyModifiers::SHIFT),
38 );
39 }
40
41 #[test]
button_up()42 fn button_up() {
43 test_sequences!(
44 b"\x1B[3;30;40;M",
45 Sequence::Mouse(Mouse::Up(MouseButton::Any, 30, 40), KeyModifiers::empty()),
46 );
47 }
48
49 #[test]
button_up_with_modifiers()50 fn button_up_with_modifiers() {
51 test_sequences!(
52 b"\x1B[7;30;40;M",
53 Sequence::Mouse(Mouse::Up(MouseButton::Any, 30, 40), KeyModifiers::SHIFT),
54 );
55 }
56
57 #[test]
scroll()58 fn scroll() {
59 test_sequences!(
60 b"\x1B[96;30;40;M",
61 Sequence::Mouse(Mouse::ScrollUp(30, 40), KeyModifiers::empty()),
62 b"\x1B[97;30;40;M",
63 Sequence::Mouse(Mouse::ScrollDown(30, 40), KeyModifiers::empty()),
64 );
65 }
66
67 #[test]
scroll_with_modifiers()68 fn scroll_with_modifiers() {
69 test_sequences!(
70 b"\x1B[100;30;40;M",
71 Sequence::Mouse(Mouse::ScrollUp(30, 40), KeyModifiers::SHIFT),
72 b"\x1B[101;30;40;M",
73 Sequence::Mouse(Mouse::ScrollDown(30, 40), KeyModifiers::SHIFT),
74 );
75 }
76
77 #[test]
drag()78 fn drag() {
79 test_sequences!(
80 b"\x1B[64;30;40;M",
81 Sequence::Mouse(
82 Mouse::Drag(MouseButton::Left, 30, 40),
83 KeyModifiers::empty()
84 ),
85 b"\x1B[65;30;40;M",
86 Sequence::Mouse(
87 Mouse::Drag(MouseButton::Middle, 30, 40),
88 KeyModifiers::empty()
89 ),
90 b"\x1B[66;30;40;M",
91 Sequence::Mouse(
92 Mouse::Drag(MouseButton::Right, 30, 40),
93 KeyModifiers::empty()
94 ),
95 );
96 }
97
98 #[test]
drag_with_modifiers()99 fn drag_with_modifiers() {
100 test_sequences!(
101 b"\x1B[64;30;40;M",
102 Sequence::Mouse(
103 Mouse::Drag(MouseButton::Left, 30, 40),
104 KeyModifiers::empty()
105 ),
106 b"\x1B[65;30;40;M",
107 Sequence::Mouse(
108 Mouse::Drag(MouseButton::Middle, 30, 40),
109 KeyModifiers::empty()
110 ),
111 b"\x1B[66;30;40;M",
112 Sequence::Mouse(
113 Mouse::Drag(MouseButton::Right, 30, 40),
114 KeyModifiers::empty()
115 ),
116 );
117 }
118
119 #[test]
key_modifier_combinations()120 fn key_modifier_combinations() {
121 test_sequences!(
122 b"\x1B[4;20;10M",
123 Sequence::Mouse(Mouse::Down(MouseButton::Left, 20, 10), KeyModifiers::SHIFT),
124 b"\x1B[8;20;10M",
125 Sequence::Mouse(Mouse::Down(MouseButton::Left, 20, 10), KeyModifiers::ALT),
126 b"\x1B[16;20;10M",
127 Sequence::Mouse(
128 Mouse::Down(MouseButton::Left, 20, 10),
129 KeyModifiers::CONTROL
130 ),
131 b"\x1B[12;20;10;M",
132 Sequence::Mouse(
133 Mouse::Down(MouseButton::Left, 20, 10),
134 KeyModifiers::SHIFT | KeyModifiers::ALT
135 ),
136 b"\x1B[20;20;10;M",
137 Sequence::Mouse(
138 Mouse::Down(MouseButton::Left, 20, 10),
139 KeyModifiers::SHIFT | KeyModifiers::CONTROL
140 ),
141 b"\x1B[24;20;10;M",
142 Sequence::Mouse(
143 Mouse::Down(MouseButton::Left, 20, 10),
144 KeyModifiers::ALT | KeyModifiers::CONTROL
145 ),
146 b"\x1B[28;20;10;M",
147 Sequence::Mouse(
148 Mouse::Down(MouseButton::Left, 20, 10),
149 KeyModifiers::SHIFT | KeyModifiers::ALT | KeyModifiers::CONTROL
150 ),
151 );
152 }
153