This repository has been archived on 2025-02-01. You can view files and clone it, but cannot push or open issues or pull requests.
PyBitmessage-2025-02-01/mockenv/lib/python3.6/site-packages/kivy/tests/test_uix_carousel.py
2022-07-22 16:13:59 +05:30

94 lines
2.5 KiB
Python

import pytest
@pytest.fixture(
scope='session', params=(True, False), ids=lambda v: 'loop=' + str(v))
def loop(request):
return request.param
def test_remove_widget(loop):
from kivy.uix.carousel import Carousel
from kivy.uix.widget import Widget
c = Carousel(loop=loop)
assert c.index is None
assert c.current_slide is None
assert len(c.children) == 0
assert len(c.slides) == 0
N_SLIDES = 4
for i in range(N_SLIDES):
c.add_widget(Widget())
assert c.index == 0
assert c.current_slide == c.slides[0]
assert len(c.children) == 3 if loop else 2
assert len(c.slides) == N_SLIDES
# test issue #6370
c.index = len(c.slides) - 1
c.remove_widget(c.slides[0])
# remove a slide(smaller index than the current_slide's).
c.index = 1
old_current_slide = c.current_slide
c.remove_widget(c.slides[c.index - 1])
assert c.index == 0
assert c.current_slide is old_current_slide
assert len(c.children) == 2
assert len(c.slides) == 2
# remove a slide(bigger index than the current_slide's).
old_current_slide = c.current_slide
c.remove_widget(c.slides[c.index + 1])
assert c.index == 0
assert c.current_slide is old_current_slide
assert len(c.children) == 1
assert len(c.slides) == 1
# remove the current_slide(the last one left).
c.remove_widget(c.current_slide)
assert c.index is None
assert c.current_slide is None
assert len(c.children) == 0
assert len(c.slides) == 0
@pytest.mark.parametrize(
('n_slides', 'index', 'loop',
'index_of_previous_slide', 'index_of_next_slide'),
(
(1, 0, False, None, None),
(1, 0, True, None, None),
(2, 0, False, None, 1),
(2, 0, True, 1, 1),
(2, 1, False, 0, None),
(2, 1, True, 0, 0),
(3, 0, False, None, 1),
(3, 0, True, 2, 1),
(3, 1, False, 0, 2),
(3, 1, True, 0, 2),
(3, 2, False, 1, None),
(3, 2, True, 1, 0),
)
)
def test_previous_and_next(
n_slides, index, loop, index_of_previous_slide, index_of_next_slide
):
from kivy.uix.carousel import Carousel
from kivy.uix.widget import Widget
c = Carousel(loop=loop)
for i in range(n_slides):
c.add_widget(Widget())
c.index = index
p_slide = c.previous_slide
assert (p_slide and c.slides.index(p_slide)) == index_of_previous_slide
n_slide = c.next_slide
assert (n_slide and c.slides.index(n_slide)) == index_of_next_slide
if __name__ == "__main__":
pytest.main(args=[
__file__,
])