@@ -137,10 +137,12 @@ class KeyboardTest : public InitTest<TypeV>
137137 BOOST_TEST_MESSAGE (fmt::format (" Duration: {}ns" , t1));
138138 // SendInput: 1000~3000us (1~3ms)
139139 // Logitech: 25~45us
140+ // Razer: 500~1000us
140141 // DD: 70~110us
141142 BOOST_TEST_MESSAGE (fmt::format (" Latency: {}ns" , t2));
142143 // SendInput: 100ns (0)
143144 // Logitech: 0.8~4ms
145+ // Razer: 0.8~10ms
144146 // DD: 0.6~1ms
145147 }
146148};
@@ -168,10 +170,13 @@ class MouseTest : public InitTest<TypeV> {
168170 }
169171 uint64_t t = measure.end ();
170172
173+ Sleep (5000 ); // avoid bothering other tests (Razer will queue all movements)
174+
171175 BOOST_TEST_MESSAGE (" TestMouseMove:" );
172176 BOOST_TEST_MESSAGE (fmt::format (" Duration: {}ns" , t / 10000 ));
173177 // SendInput: 200~800us
174178 // Logitech: 3~10us
179+ // Razer: 3~5us
175180 // DD: 500~1000us
176181 }
177182
@@ -199,6 +204,7 @@ class MouseTest : public InitTest<TypeV> {
199204 BOOST_TEST_MESSAGE (fmt::format (" Latency: {}ns" , latency));
200205 // SendInput: 0.003~0.2ms (3~200us)
201206 // Logitech: 0.9~4ms
207+ // Razer: 0.7~4ms
202208 // DD: 1.1ms~1.3ms
203209 }
204210
@@ -225,28 +231,32 @@ class MouseTest : public InitTest<TypeV> {
225231 }
226232
227233 void TestMouseRelativeMove () {
228- POINT p1, p2, d1, d2;
229- GetCursorPos (&p1);
230-
231- INPUT input;
232- input.type = INPUT_MOUSE;
233- input.mi = {};
234- input.mi .dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_MOVE_NOCOALESCE;
235- input.mi .dx = input.mi .dy = 100 ;
236- IbSendInput (1 , &input, sizeof INPUT);
234+ auto test = [](LONG movement) {
235+ POINT p1, p2, d1, d2;
236+ GetCursorPos (&p1);
237237
238- GetCursorPos (&p2);
239- d1 = { p2.x - p1.x , p2.y - p1.y };
238+ INPUT input;
239+ input.type = INPUT_MOUSE;
240+ input.mi = {};
241+ input.mi .dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_MOVE_NOCOALESCE;
242+ input.mi .dx = input.mi .dy = movement;
243+ IbSendInput (1 , &input, sizeof INPUT);
240244
241- Sleep (10 );
245+ GetCursorPos (&p2);
246+ d1 = { p2.x - p1.x , p2.y - p1.y };
242247
243- GetCursorPos (&p2);
244- d2 = { p2.x - p1.x , p2.y - p1.y };
245- BOOST_CHECK ((abs (d2.x - 100 ) <= 10 && abs (d2.y - 100 ) <= 100 ));
248+ Sleep (10 );
246249
247- BOOST_TEST_MESSAGE (" TestMouseRelativeMove:" );
248- BOOST_TEST_MESSAGE (fmt::format (" 0ms: ({}, {})" , d1.x , d1.y ));
249- BOOST_TEST_MESSAGE (fmt::format (" 10ms: ({}, {})" , d2.x , d2.y ));
250+ GetCursorPos (&p2);
251+ d2 = { p2.x - p1.x , p2.y - p1.y };
252+ BOOST_CHECK ((abs (d2.x - movement) <= 10 && abs (d2.y - movement) <= 10 ));
253+
254+ BOOST_TEST_MESSAGE (" TestMouseRelativeMove(" << movement << " ):" );
255+ BOOST_TEST_MESSAGE (fmt::format (" 0ms: ({}, {})" , d1.x , d1.y ));
256+ BOOST_TEST_MESSAGE (fmt::format (" 10ms: ({}, {})" , d2.x , d2.y ));
257+ };
258+ test (100 );
259+ test (-100 );
250260 }
251261};
252262
@@ -286,6 +296,7 @@ BOOST_AUTO_TEST_SUITE_END()
286296CODE_GENERATE_TEST_NAME (SendInput_, SendInput)
287297CODE_GENERATE_TEST(AnyDriver)
288298CODE_GENERATE_TEST(Logitech)
299+ CODE_GENERATE_TEST(Razer)
289300
290301BOOST_AUTO_TEST_SUITE(DD)
291302 BOOST_FIXTURE_TEST_SUITE(Keyboard, KeyboardTest<SendType::DD>)
0 commit comments