Skip to content

Commit 881ccc3

Browse files
author
Benjamin Tissoires
committed
selftests/hid: tablets: move move_to function to PenDigitizer
We can easily subclass PenDigitizer for introducing firmware bugs when subclassing Pen is harder. Move move_to from Pen to PenDigitizer so we get that ability Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Jiri Kosina <jkosina@suse.com> Link: https://lore.kernel.org/r/20231206-wip-selftests-v2-6-c0350c2f5986@kernel.org Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
1 parent d52f520 commit 881ccc3

1 file changed

Lines changed: 50 additions & 47 deletions

File tree

tools/testing/selftests/hid/tests/test_tablet.py

Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ def __init__(self, x, y):
282282
self._old_values = None
283283
self.current_state = None
284284

285-
def _restore(self):
285+
def restore(self):
286286
if self._old_values is not None:
287287
for i in [
288288
"x",
@@ -297,50 +297,8 @@ def _restore(self):
297297
]:
298298
setattr(self, i, getattr(self._old_values, i))
299299

300-
def move_to(self, state):
301-
# fill in the previous values
302-
if self.current_state == PenState.PEN_IS_OUT_OF_RANGE:
303-
self._restore()
304-
305-
print(f"\n *** pen is moving to {state} ***")
306-
307-
if state == PenState.PEN_IS_OUT_OF_RANGE:
308-
self._old_values = copy.copy(self)
309-
self.x = 0
310-
self.y = 0
311-
self.tipswitch = False
312-
self.tippressure = 0
313-
self.azimuth = 0
314-
self.inrange = False
315-
self.width = 0
316-
self.height = 0
317-
self.invert = False
318-
self.eraser = False
319-
self.x_tilt = 0
320-
self.y_tilt = 0
321-
self.twist = 0
322-
elif state == PenState.PEN_IS_IN_RANGE:
323-
self.tipswitch = False
324-
self.inrange = True
325-
self.invert = False
326-
self.eraser = False
327-
elif state == PenState.PEN_IS_IN_CONTACT:
328-
self.tipswitch = True
329-
self.inrange = True
330-
self.invert = False
331-
self.eraser = False
332-
elif state == PenState.PEN_IS_IN_RANGE_WITH_ERASING_INTENT:
333-
self.tipswitch = False
334-
self.inrange = True
335-
self.invert = True
336-
self.eraser = False
337-
elif state == PenState.PEN_IS_ERASING:
338-
self.tipswitch = False
339-
self.inrange = True
340-
self.invert = True
341-
self.eraser = True
342-
343-
self.current_state = state
300+
def backup(self):
301+
self._old_values = copy.copy(self)
344302

345303
def __assert_axis(self, evdev, axis, value):
346304
if (
@@ -384,6 +342,51 @@ def __init__(
384342
continue
385343
self.fields = [f.usage_name for f in r]
386344

345+
def move_to(self, pen, state):
346+
# fill in the previous values
347+
if pen.current_state == PenState.PEN_IS_OUT_OF_RANGE:
348+
pen.restore()
349+
350+
print(f"\n *** pen is moving to {state} ***")
351+
352+
if state == PenState.PEN_IS_OUT_OF_RANGE:
353+
pen.backup()
354+
pen.x = 0
355+
pen.y = 0
356+
pen.tipswitch = False
357+
pen.tippressure = 0
358+
pen.azimuth = 0
359+
pen.inrange = False
360+
pen.width = 0
361+
pen.height = 0
362+
pen.invert = False
363+
pen.eraser = False
364+
pen.x_tilt = 0
365+
pen.y_tilt = 0
366+
pen.twist = 0
367+
elif state == PenState.PEN_IS_IN_RANGE:
368+
pen.tipswitch = False
369+
pen.inrange = True
370+
pen.invert = False
371+
pen.eraser = False
372+
elif state == PenState.PEN_IS_IN_CONTACT:
373+
pen.tipswitch = True
374+
pen.inrange = True
375+
pen.invert = False
376+
pen.eraser = False
377+
elif state == PenState.PEN_IS_IN_RANGE_WITH_ERASING_INTENT:
378+
pen.tipswitch = False
379+
pen.inrange = True
380+
pen.invert = True
381+
pen.eraser = False
382+
elif state == PenState.PEN_IS_ERASING:
383+
pen.tipswitch = False
384+
pen.inrange = True
385+
pen.invert = True
386+
pen.eraser = True
387+
388+
pen.current_state = state
389+
387390
def event(self, pen):
388391
rs = []
389392
r = self.create_report(application=self.cur_application, data=pen)
@@ -462,7 +465,7 @@ def _test_states(self, state_list, scribble):
462465
cur_state = PenState.PEN_IS_OUT_OF_RANGE
463466

464467
p = Pen(50, 60)
465-
p.move_to(PenState.PEN_IS_OUT_OF_RANGE)
468+
uhdev.move_to(p, PenState.PEN_IS_OUT_OF_RANGE)
466469
events = self.post(uhdev, p)
467470
self.validate_transitions(cur_state, p, evdev, events)
468471

@@ -475,7 +478,7 @@ def _test_states(self, state_list, scribble):
475478
events = self.post(uhdev, p)
476479
self.validate_transitions(cur_state, p, evdev, events)
477480
assert len(events) >= 3 # X, Y, SYN
478-
p.move_to(state)
481+
uhdev.move_to(p, state)
479482
if scribble and state != PenState.PEN_IS_OUT_OF_RANGE:
480483
p.x += 1
481484
p.y -= 1

0 commit comments

Comments
 (0)