Files
MementoMori/kivy/tests/test_motion_event.py
thatscringebro abd15f28b6 Ajout du GUI
2022-08-08 16:31:52 -04:00

45 lines
1.7 KiB
Python

import pytest
from kivy.compat import isclose
from kivy.input import MotionEvent
class DummyMotionEvent(MotionEvent):
pass
class TestMotionEvent:
def create_dummy_motion_event(self):
return DummyMotionEvent('dummy', 'dummy1', (0, 0))
def build_to_absolute_pos_data(self, x_max, y_max, x_step, y_step):
for x, y in zip(range(0, x_max, x_step), range(0, y_max, y_step)):
result = (x, y)
yield x / x_max, y / y_max, x_max, y_max, 0, result
for x, y, in zip(range(0, x_max, x_step), range(0, y_max, y_step)):
result = (y, x_max - x)
yield x / x_max, y / y_max, x_max, y_max, 90, result
for x, y, in zip(range(0, x_max, x_step), range(0, y_max, y_step)):
result = (x_max - x, y_max - y)
yield x / x_max, y / y_max, x_max, y_max, 180, result
for x, y, in zip(range(0, x_max, x_step), range(0, y_max, y_step)):
result = (y_max - y, x)
yield x / x_max, y / y_max, x_max, y_max, 270, result
def test_to_absolute_pos(self):
event = self.create_dummy_motion_event()
for item in self.build_to_absolute_pos_data(320, 240, 20, 21):
args = item[:-1]
expected_x, expected_y = item[-1]
x, y = event.to_absolute_pos(*args)
message = ('For args {} expected ({}, {}), got ({}, {})'
.format(args, expected_x, expected_y, x, y))
correct = isclose(x, expected_x) and isclose(y, expected_y)
assert correct, message
def test_to_absolute_pos_error(self):
event = self.create_dummy_motion_event()
with pytest.raises(ValueError):
event.to_absolute_pos(0, 0, 100, 100, 10)