mirror of
https://github.com/torvalds/linux.git
synced 2026-04-19 23:34:00 -04:00
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>
This commit is contained in:
@@ -282,7 +282,7 @@ class Pen(object):
|
||||
self._old_values = None
|
||||
self.current_state = None
|
||||
|
||||
def _restore(self):
|
||||
def restore(self):
|
||||
if self._old_values is not None:
|
||||
for i in [
|
||||
"x",
|
||||
@@ -297,50 +297,8 @@ class Pen(object):
|
||||
]:
|
||||
setattr(self, i, getattr(self._old_values, i))
|
||||
|
||||
def move_to(self, state):
|
||||
# fill in the previous values
|
||||
if self.current_state == PenState.PEN_IS_OUT_OF_RANGE:
|
||||
self._restore()
|
||||
|
||||
print(f"\n *** pen is moving to {state} ***")
|
||||
|
||||
if state == PenState.PEN_IS_OUT_OF_RANGE:
|
||||
self._old_values = copy.copy(self)
|
||||
self.x = 0
|
||||
self.y = 0
|
||||
self.tipswitch = False
|
||||
self.tippressure = 0
|
||||
self.azimuth = 0
|
||||
self.inrange = False
|
||||
self.width = 0
|
||||
self.height = 0
|
||||
self.invert = False
|
||||
self.eraser = False
|
||||
self.x_tilt = 0
|
||||
self.y_tilt = 0
|
||||
self.twist = 0
|
||||
elif state == PenState.PEN_IS_IN_RANGE:
|
||||
self.tipswitch = False
|
||||
self.inrange = True
|
||||
self.invert = False
|
||||
self.eraser = False
|
||||
elif state == PenState.PEN_IS_IN_CONTACT:
|
||||
self.tipswitch = True
|
||||
self.inrange = True
|
||||
self.invert = False
|
||||
self.eraser = False
|
||||
elif state == PenState.PEN_IS_IN_RANGE_WITH_ERASING_INTENT:
|
||||
self.tipswitch = False
|
||||
self.inrange = True
|
||||
self.invert = True
|
||||
self.eraser = False
|
||||
elif state == PenState.PEN_IS_ERASING:
|
||||
self.tipswitch = False
|
||||
self.inrange = True
|
||||
self.invert = True
|
||||
self.eraser = True
|
||||
|
||||
self.current_state = state
|
||||
def backup(self):
|
||||
self._old_values = copy.copy(self)
|
||||
|
||||
def __assert_axis(self, evdev, axis, value):
|
||||
if (
|
||||
@@ -384,6 +342,51 @@ class PenDigitizer(base.UHIDTestDevice):
|
||||
continue
|
||||
self.fields = [f.usage_name for f in r]
|
||||
|
||||
def move_to(self, pen, state):
|
||||
# fill in the previous values
|
||||
if pen.current_state == PenState.PEN_IS_OUT_OF_RANGE:
|
||||
pen.restore()
|
||||
|
||||
print(f"\n *** pen is moving to {state} ***")
|
||||
|
||||
if state == PenState.PEN_IS_OUT_OF_RANGE:
|
||||
pen.backup()
|
||||
pen.x = 0
|
||||
pen.y = 0
|
||||
pen.tipswitch = False
|
||||
pen.tippressure = 0
|
||||
pen.azimuth = 0
|
||||
pen.inrange = False
|
||||
pen.width = 0
|
||||
pen.height = 0
|
||||
pen.invert = False
|
||||
pen.eraser = False
|
||||
pen.x_tilt = 0
|
||||
pen.y_tilt = 0
|
||||
pen.twist = 0
|
||||
elif state == PenState.PEN_IS_IN_RANGE:
|
||||
pen.tipswitch = False
|
||||
pen.inrange = True
|
||||
pen.invert = False
|
||||
pen.eraser = False
|
||||
elif state == PenState.PEN_IS_IN_CONTACT:
|
||||
pen.tipswitch = True
|
||||
pen.inrange = True
|
||||
pen.invert = False
|
||||
pen.eraser = False
|
||||
elif state == PenState.PEN_IS_IN_RANGE_WITH_ERASING_INTENT:
|
||||
pen.tipswitch = False
|
||||
pen.inrange = True
|
||||
pen.invert = True
|
||||
pen.eraser = False
|
||||
elif state == PenState.PEN_IS_ERASING:
|
||||
pen.tipswitch = False
|
||||
pen.inrange = True
|
||||
pen.invert = True
|
||||
pen.eraser = True
|
||||
|
||||
pen.current_state = state
|
||||
|
||||
def event(self, pen):
|
||||
rs = []
|
||||
r = self.create_report(application=self.cur_application, data=pen)
|
||||
@@ -462,7 +465,7 @@ class BaseTest:
|
||||
cur_state = PenState.PEN_IS_OUT_OF_RANGE
|
||||
|
||||
p = Pen(50, 60)
|
||||
p.move_to(PenState.PEN_IS_OUT_OF_RANGE)
|
||||
uhdev.move_to(p, PenState.PEN_IS_OUT_OF_RANGE)
|
||||
events = self.post(uhdev, p)
|
||||
self.validate_transitions(cur_state, p, evdev, events)
|
||||
|
||||
@@ -475,7 +478,7 @@ class BaseTest:
|
||||
events = self.post(uhdev, p)
|
||||
self.validate_transitions(cur_state, p, evdev, events)
|
||||
assert len(events) >= 3 # X, Y, SYN
|
||||
p.move_to(state)
|
||||
uhdev.move_to(p, state)
|
||||
if scribble and state != PenState.PEN_IS_OUT_OF_RANGE:
|
||||
p.x += 1
|
||||
p.y -= 1
|
||||
|
||||
Reference in New Issue
Block a user