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