Ajout du GUI
This commit is contained in:
101
kivy/tests/test_uix_modal.py
Normal file
101
kivy/tests/test_uix_modal.py
Normal file
@@ -0,0 +1,101 @@
|
||||
""" modal view unit tests. """
|
||||
from kivy.tests import async_run, UnitKivyApp
|
||||
from math import isclose
|
||||
|
||||
|
||||
def modal_app():
|
||||
""" test app factory function. """
|
||||
from kivy.app import App
|
||||
from kivy.uix.button import Button
|
||||
from kivy.uix.modalview import ModalView
|
||||
|
||||
# noinspection PyProtectedMember
|
||||
class ModalButton(Button):
|
||||
""" button used as root widget to test touch. """
|
||||
modal = None
|
||||
|
||||
def on_touch_down(self, touch):
|
||||
""" touch down event handler. """
|
||||
assert self.modal._window is None
|
||||
assert not self.modal._is_open
|
||||
return super(ModalButton, self).on_touch_down(touch)
|
||||
|
||||
def on_touch_move(self, touch):
|
||||
""" touch move event handler. """
|
||||
assert self.modal._window is None
|
||||
assert not self.modal._is_open
|
||||
return super(ModalButton, self).on_touch_move(touch)
|
||||
|
||||
def on_touch_up(self, touch):
|
||||
""" touch up event handler. """
|
||||
assert self.modal._window is None
|
||||
assert not self.modal._is_open
|
||||
return super(ModalButton, self).on_touch_up(touch)
|
||||
|
||||
class TestApp(UnitKivyApp, App):
|
||||
""" test app class. """
|
||||
def build(self):
|
||||
""" build root layout. """
|
||||
root = ModalButton()
|
||||
root.modal = ModalView(size_hint=(.2, .5))
|
||||
return root
|
||||
|
||||
return TestApp()
|
||||
|
||||
|
||||
@async_run(app_cls_func=modal_app)
|
||||
async def test_modal_app(kivy_app):
|
||||
await kivy_app.wait_clock_frames(2)
|
||||
button = kivy_app.root
|
||||
modal = button.modal
|
||||
modal._anim_duration = 0
|
||||
assert modal._window is None
|
||||
assert not modal._is_open
|
||||
|
||||
# just press button
|
||||
async for _ in kivy_app.do_touch_down_up(widget=button):
|
||||
assert modal._window is None
|
||||
assert not modal._is_open
|
||||
async for _ in kivy_app.do_touch_drag(widget=button, dx=button.width / 4):
|
||||
assert modal._window is None
|
||||
assert not modal._is_open
|
||||
|
||||
# open modal
|
||||
modal.open()
|
||||
await kivy_app.wait_clock_frames(2)
|
||||
assert modal._window is not None
|
||||
assert modal._is_open
|
||||
assert isclose(modal.center_x, button.center_x, abs_tol=.1)
|
||||
assert isclose(modal.center_y, button.center_y, abs_tol=.1)
|
||||
|
||||
# press within modal area - should stay open
|
||||
async for _ in kivy_app.do_touch_down_up(widget=button):
|
||||
pass
|
||||
assert modal._window is not None
|
||||
assert modal._is_open
|
||||
# start in modal but release outside - should stay open
|
||||
async for _ in kivy_app.do_touch_drag(widget=button, dx=button.width / 4):
|
||||
pass
|
||||
assert modal._window is not None
|
||||
assert modal._is_open
|
||||
|
||||
# start outside but release in modal - should close
|
||||
async for _ in kivy_app.do_touch_drag(
|
||||
pos=(button.center_x + button.width / 4, button.center_y),
|
||||
target_widget=button):
|
||||
pass
|
||||
assert modal._window is None
|
||||
assert not modal._is_open
|
||||
|
||||
# open modal again
|
||||
modal.open()
|
||||
await kivy_app.wait_clock_frames(2)
|
||||
assert modal._window is not None
|
||||
assert modal._is_open
|
||||
|
||||
# press outside modal area - should close
|
||||
async for _ in kivy_app.do_touch_down_up(
|
||||
pos=(button.center_x + button.width / 4, button.center_y)):
|
||||
pass
|
||||
assert modal._window is None
|
||||
assert not modal._is_open
|
||||
Reference in New Issue
Block a user