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